![]() |
MAGMA 2.9.0
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
magma_int_t | magma_cbajac_csr (magma_int_t localiters, magma_c_matrix D, magma_c_matrix R, magma_c_matrix b, magma_c_matrix *x, magma_queue_t queue) |
This routine is a block-asynchronous Jacobi iteration performing s local Jacobi-updates within the block. | |
magma_int_t | magma_cbajac_csr_overlap (magma_int_t localiters, magma_int_t matrices, magma_int_t overlap, magma_c_matrix *D, magma_c_matrix *R, magma_c_matrix b, magma_c_matrix *x, magma_queue_t queue) |
This routine is a block-asynchronous Jacobi iteration with directed restricted additive Schwarz overlap (top-down) performing s local Jacobi-updates within the block. | |
magma_int_t | magma_ccompact (magma_int_t m, magma_int_t n, magmaFloatComplex_ptr dA, magma_int_t ldda, magmaFloat_ptr dnorms, float tol, magmaInt_ptr active, magmaInt_ptr cBlock, magma_queue_t queue) |
ZCOMPACT takes a set of n vectors of size m (in dA) and their norms and compacts them into the cBlock size<=n vectors that have norms > tol. | |
magma_int_t | magma_cjacobisetup_vector_gpu (magma_int_t num_rows, magma_c_matrix b, magma_c_matrix d, magma_c_matrix c, magma_c_matrix *x, magma_queue_t queue) |
Prepares the Jacobi Iteration according to x^(k+1) = D^(-1) * b - D^(-1) * (L+U) * x^k x^(k+1) = c - M * x^k. | |
magma_int_t | magma_clobpcg_maxpy (magma_int_t num_rows, magma_int_t num_vecs, magmaFloatComplex_ptr X, magmaFloatComplex_ptr Y, magma_queue_t queue) |
This routine computes a axpy for a mxn matrix: | |
magma_int_t | magma_cbicgstab_1 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex beta, magmaFloatComplex omega, magmaFloatComplex_ptr r, magmaFloatComplex_ptr v, magmaFloatComplex_ptr p, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cbicgstab_2 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex alpha, magmaFloatComplex_ptr r, magmaFloatComplex_ptr v, magmaFloatComplex_ptr s, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cbicgstab_3 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex alpha, magmaFloatComplex omega, magmaFloatComplex_ptr p, magmaFloatComplex_ptr s, magmaFloatComplex_ptr t, magmaFloatComplex_ptr x, magmaFloatComplex_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cbicgstab_4 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex alpha, magmaFloatComplex omega, magmaFloatComplex_ptr y, magmaFloatComplex_ptr z, magmaFloatComplex_ptr s, magmaFloatComplex_ptr t, magmaFloatComplex_ptr x, magmaFloatComplex_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cbicgmerge_spmv1 (magma_c_matrix A, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr dp, magmaFloatComplex_ptr dr, magmaFloatComplex_ptr dv, magmaFloatComplex_ptr skp, magma_queue_t queue) |
Merges the first SpmV using CSR with the dot product and the computation of alpha. | |
magma_int_t | magma_cbicgmerge_spmv2 (magma_c_matrix A, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr ds, magmaFloatComplex_ptr dt, magmaFloatComplex_ptr skp, magma_queue_t queue) |
Merges the second SpmV using CSR with the dot product and the computation of omega. | |
magma_int_t | magma_cbicgmerge_xrbeta (magma_int_t n, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr rr, magmaFloatComplex_ptr r, magmaFloatComplex_ptr p, magmaFloatComplex_ptr s, magmaFloatComplex_ptr t, magmaFloatComplex_ptr x, magmaFloatComplex_ptr skp, magma_queue_t queue) |
Merges the second SpmV using CSR with the dot product and the computation of omega. | |
magma_int_t | magma_cbicgmerge1 (magma_int_t n, magmaFloatComplex_ptr skp, magmaFloatComplex_ptr v, magmaFloatComplex_ptr r, magmaFloatComplex_ptr p, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cbicgmerge2 (magma_int_t n, magmaFloatComplex_ptr skp, magmaFloatComplex_ptr r, magmaFloatComplex_ptr v, magmaFloatComplex_ptr s, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cbicgmerge3 (magma_int_t n, magmaFloatComplex_ptr skp, magmaFloatComplex_ptr p, magmaFloatComplex_ptr s, magmaFloatComplex_ptr t, magmaFloatComplex_ptr x, magmaFloatComplex_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cbicgmerge4 (magma_int_t type, magmaFloatComplex_ptr skp, magma_queue_t queue) |
Performs some parameter operations for the BiCGSTAB with scalars on GPU. | |
magma_int_t | magma_cmergeblockkrylov (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex_ptr alpha, magmaFloatComplex_ptr p, magmaFloatComplex_ptr x, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_ccgmerge_spmv1 (magma_c_matrix A, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr dd, magmaFloatComplex_ptr dz, magmaFloatComplex_ptr skp, magma_queue_t queue) |
Merges the first SpmV using different formats with the dot product and the computation of rho. | |
magma_int_t | magma_ccgs_1 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex beta, magmaFloatComplex_ptr r, magmaFloatComplex_ptr q, magmaFloatComplex_ptr u, magmaFloatComplex_ptr p, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_ccgs_2 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex_ptr r, magmaFloatComplex_ptr u, magmaFloatComplex_ptr p, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_ccgs_3 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex alpha, magmaFloatComplex_ptr v_hat, magmaFloatComplex_ptr u, magmaFloatComplex_ptr q, magmaFloatComplex_ptr t, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_ccgs_4 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex alpha, magmaFloatComplex_ptr u_hat, magmaFloatComplex_ptr t, magmaFloatComplex_ptr x, magmaFloatComplex_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cidr_smoothing_1 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex_ptr drs, magmaFloatComplex_ptr dr, magmaFloatComplex_ptr dt, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cidr_smoothing_2 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex omega, magmaFloatComplex_ptr dx, magmaFloatComplex_ptr dxs, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cqmr_1 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex rho, magmaFloatComplex psi, magmaFloatComplex_ptr y, magmaFloatComplex_ptr z, magmaFloatComplex_ptr v, magmaFloatComplex_ptr w, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cqmr_2 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex pde, magmaFloatComplex rde, magmaFloatComplex_ptr y, magmaFloatComplex_ptr z, magmaFloatComplex_ptr p, magmaFloatComplex_ptr q, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cqmr_3 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex beta, magmaFloatComplex_ptr pt, magmaFloatComplex_ptr v, magmaFloatComplex_ptr y, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cqmr_4 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex eta, magmaFloatComplex_ptr p, magmaFloatComplex_ptr pt, magmaFloatComplex_ptr d, magmaFloatComplex_ptr s, magmaFloatComplex_ptr x, magmaFloatComplex_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cqmr_5 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex eta, magmaFloatComplex pds, magmaFloatComplex_ptr p, magmaFloatComplex_ptr pt, magmaFloatComplex_ptr d, magmaFloatComplex_ptr s, magmaFloatComplex_ptr x, magmaFloatComplex_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cqmr_6 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex beta, magmaFloatComplex rho, magmaFloatComplex psi, magmaFloatComplex_ptr y, magmaFloatComplex_ptr z, magmaFloatComplex_ptr v, magmaFloatComplex_ptr w, magmaFloatComplex_ptr wt, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cqmr_7 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex beta, magmaFloatComplex_ptr pt, magmaFloatComplex_ptr v, magmaFloatComplex_ptr vt, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cqmr_8 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex rho, magmaFloatComplex psi, magmaFloatComplex_ptr vt, magmaFloatComplex_ptr wt, magmaFloatComplex_ptr y, magmaFloatComplex_ptr z, magmaFloatComplex_ptr v, magmaFloatComplex_ptr w, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_ctfqmr_1 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex alpha, magmaFloatComplex sigma, magmaFloatComplex_ptr v, magmaFloatComplex_ptr Au, magmaFloatComplex_ptr u_m, magmaFloatComplex_ptr pu_m, magmaFloatComplex_ptr u_mp1, magmaFloatComplex_ptr w, magmaFloatComplex_ptr d, magmaFloatComplex_ptr Ad, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_ctfqmr_2 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex eta, magmaFloatComplex_ptr d, magmaFloatComplex_ptr Ad, magmaFloatComplex_ptr x, magmaFloatComplex_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_ctfqmr_3 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex beta, magmaFloatComplex_ptr w, magmaFloatComplex_ptr u_m, magmaFloatComplex_ptr u_mp1, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_ctfqmr_4 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex beta, magmaFloatComplex_ptr Au_new, magmaFloatComplex_ptr v, magmaFloatComplex_ptr Au, magma_queue_t queue) |
Merges multiple operations into one kernel: | |
magma_int_t | magma_ctfqmr_5 (magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex alpha, magmaFloatComplex sigma, magmaFloatComplex_ptr v, magmaFloatComplex_ptr Au, magmaFloatComplex_ptr u_mp1, magmaFloatComplex_ptr w, magmaFloatComplex_ptr d, magmaFloatComplex_ptr Ad, magma_queue_t queue) |
Mergels multiple operations into one kernel: | |
magma_int_t | magma_cparic_csr (magma_c_matrix A, magma_c_matrix A_CSR, magma_queue_t queue) |
This routine iteratively computes an incomplete LU factorization. | |
magma_int_t | magma_cparilu_csr (magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_queue_t queue) |
This routine iteratively computes an incomplete LU factorization. | |
magma_int_t | magma_cparilut_sweep_gpu (magma_c_matrix *A, magma_c_matrix *L, magma_c_matrix *U, magma_queue_t queue) |
This function does an ParILUT sweep. | |
magma_int_t | magma_cparilut_residuals_gpu (magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix *R, magma_queue_t queue) |
This function computes the ILU residual in the locations included in the sparsity pattern of R. | |
magma_int_t | magma_cvalinit_gpu (magma_int_t num_el, magmaFloatComplex_ptr dval, magma_queue_t queue) |
Initializes a device array with zero. | |
magma_int_t | magma_cindexinit_gpu (magma_int_t num_el, magmaIndex_ptr dind, magma_queue_t queue) |
Initializes a device array with zero. | |
magma_int_t magma_cbajac_csr | ( | magma_int_t | localiters, |
magma_c_matrix | D, | ||
magma_c_matrix | R, | ||
magma_c_matrix | b, | ||
magma_c_matrix * | x, | ||
magma_queue_t | queue ) |
This routine is a block-asynchronous Jacobi iteration performing s local Jacobi-updates within the block.
Input format is two CSR matrices, one containing the diagonal blocks, one containing the rest.
[in] | localiters | magma_int_t number of local Jacobi-like updates |
[in] | D | magma_c_matrix input matrix with diagonal blocks |
[in] | R | magma_c_matrix input matrix with non-diagonal parts |
[in] | b | magma_c_matrix RHS |
[in] | x | magma_c_matrix* iterate/solution |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbajac_csr_overlap | ( | magma_int_t | localiters, |
magma_int_t | matrices, | ||
magma_int_t | overlap, | ||
magma_c_matrix * | D, | ||
magma_c_matrix * | R, | ||
magma_c_matrix | b, | ||
magma_c_matrix * | x, | ||
magma_queue_t | queue ) |
This routine is a block-asynchronous Jacobi iteration with directed restricted additive Schwarz overlap (top-down) performing s local Jacobi-updates within the block.
Input format is two CSR matrices, one containing the diagonal blocks, one containing the rest.
[in] | localiters | magma_int_t number of local Jacobi-like updates |
[in] | matrices | magma_int_t number of sub-matrices |
[in] | overlap | magma_int_t size of the overlap |
[in] | D | magma_c_matrix* set of matrices with diagonal blocks |
[in] | R | magma_c_matrix* set of matrices with non-diagonal parts |
[in] | b | magma_c_matrix RHS |
[in] | x | magma_c_matrix* iterate/solution |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ccompact | ( | magma_int_t | m, |
magma_int_t | n, | ||
magmaFloatComplex_ptr | dA, | ||
magma_int_t | ldda, | ||
magmaFloat_ptr | dnorms, | ||
float | tol, | ||
magmaInt_ptr | active, | ||
magmaInt_ptr | cBlock, | ||
magma_queue_t | queue ) |
ZCOMPACT takes a set of n vectors of size m (in dA) and their norms and compacts them into the cBlock size<=n vectors that have norms > tol.
The active mask array has 1 or 0, showing if a vector remained or not in the compacted resulting set of vectors.
[in] | m | INTEGER The number of rows of the matrix dA. M >= 0. |
[in] | n | INTEGER The number of columns of the matrix dA. N >= 0. |
[in,out] | dA | COMPLEX REAL array, dimension (LDDA,N) The m by n matrix dA. |
[in] | ldda | INTEGER The leading dimension of the array dA. LDDA >= max(1,M). |
[in] | dnorms | REAL array, dimension N The norms of the N vectors in dA |
[in] | tol | DOUBLE PRECISON The tolerance value used in the criteria to compact or not. |
[in,out] | active | INTEGER array, dimension N A mask of 1s and 0s showing if a vector remains or has been removed |
[in,out] | cBlock | magmaInt_ptr The number of vectors that remain in dA (i.e., with norms > tol). |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cjacobisetup_vector_gpu | ( | magma_int_t | num_rows, |
magma_c_matrix | b, | ||
magma_c_matrix | d, | ||
magma_c_matrix | c, | ||
magma_c_matrix * | x, | ||
magma_queue_t | queue ) |
Prepares the Jacobi Iteration according to x^(k+1) = D^(-1) * b - D^(-1) * (L+U) * x^k x^(k+1) = c - M * x^k.
Returns the vector c. It calls a GPU kernel
[in] | num_rows | magma_int_t number of rows |
[in] | b | magma_c_matrix RHS b |
[in] | d | magma_c_matrix vector with diagonal entries |
[out] | c | magma_c_matrix* c = D^(-1) * b |
[out] | x | magma_c_matrix* iteration vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_clobpcg_maxpy | ( | magma_int_t | num_rows, |
magma_int_t | num_vecs, | ||
magmaFloatComplex_ptr | X, | ||
magmaFloatComplex_ptr | Y, | ||
magma_queue_t | queue ) |
This routine computes a axpy for a mxn matrix:
Y = X + Y
It replaces: magma_caxpy(m*n, c_one, Y, 1, X, 1);
/ x1[0] x2[0] x3[0] \ | x1[1] x2[1] x3[1] |
X = | x1[2] x2[2] x3[2] | = x1[0] x1[1] x1[2] x1[3] x1[4] x2[0] x2[1] . | x1[3] x2[3] x3[3] | \ x1[4] x2[4] x3[4] /
[in] | num_rows | magma_int_t number of rows |
[in] | num_vecs | magma_int_t number of vectors |
[in] | X | magmaFloatComplex_ptr input vector X |
[in,out] | Y | magmaFloatComplex_ptr input/output vector Y |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgstab_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | beta, | ||
magmaFloatComplex | omega, | ||
magmaFloatComplex_ptr | r, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | p, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
p = r + beta * ( p - omega * v )
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | beta | magmaFloatComplex scalar |
[in] | omega | magmaFloatComplex scalar |
[in] | r | magmaFloatComplex_ptr vector |
[in] | v | magmaFloatComplex_ptr vector |
[in,out] | p | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgstab_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | alpha, | ||
magmaFloatComplex_ptr | r, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | s, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
s = r - alpha v
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | alpha | magmaFloatComplex scalar |
[in] | r | magmaFloatComplex_ptr vector |
[in] | v | magmaFloatComplex_ptr vector |
[in,out] | s | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgstab_3 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | alpha, | ||
magmaFloatComplex | omega, | ||
magmaFloatComplex_ptr | p, | ||
magmaFloatComplex_ptr | s, | ||
magmaFloatComplex_ptr | t, | ||
magmaFloatComplex_ptr | x, | ||
magmaFloatComplex_ptr | r, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
x = x + alpha * p + omega * s r = s - omega * t
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | alpha | magmaFloatComplex scalar |
[in] | omega | magmaFloatComplex scalar |
[in] | p | magmaFloatComplex_ptr vector |
[in] | s | magmaFloatComplex_ptr vector |
[in] | t | magmaFloatComplex_ptr vector |
[in,out] | x | magmaFloatComplex_ptr vector |
[in,out] | r | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgstab_4 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | alpha, | ||
magmaFloatComplex | omega, | ||
magmaFloatComplex_ptr | y, | ||
magmaFloatComplex_ptr | z, | ||
magmaFloatComplex_ptr | s, | ||
magmaFloatComplex_ptr | t, | ||
magmaFloatComplex_ptr | x, | ||
magmaFloatComplex_ptr | r, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
x = x + alpha * y + omega * z r = s - omega * t
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | alpha | magmaFloatComplex scalar |
[in] | omega | magmaFloatComplex scalar |
[in] | y | magmaFloatComplex_ptr vector |
[in] | z | magmaFloatComplex_ptr vector |
[in] | s | magmaFloatComplex_ptr vector |
[in] | t | magmaFloatComplex_ptr vector |
[in,out] | x | magmaFloatComplex_ptr vector |
[in,out] | r | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgmerge_spmv1 | ( | magma_c_matrix | A, |
magmaFloatComplex_ptr | d1, | ||
magmaFloatComplex_ptr | d2, | ||
magmaFloatComplex_ptr | dp, | ||
magmaFloatComplex_ptr | dr, | ||
magmaFloatComplex_ptr | dv, | ||
magmaFloatComplex_ptr | skp, | ||
magma_queue_t | queue ) |
Merges the first SpmV using CSR with the dot product and the computation of alpha.
[in] | A | magma_c_matrix system matrix |
[in] | d1 | magmaFloatComplex_ptr temporary vector |
[in] | d2 | magmaFloatComplex_ptr temporary vector |
[in] | dp | magmaFloatComplex_ptr input vector p |
[in] | dr | magmaFloatComplex_ptr input vector r |
[in] | dv | magmaFloatComplex_ptr output vector v |
[in,out] | skp | magmaFloatComplex_ptr array for parameters ( skp[0]=alpha ) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgmerge_spmv2 | ( | magma_c_matrix | A, |
magmaFloatComplex_ptr | d1, | ||
magmaFloatComplex_ptr | d2, | ||
magmaFloatComplex_ptr | ds, | ||
magmaFloatComplex_ptr | dt, | ||
magmaFloatComplex_ptr | skp, | ||
magma_queue_t | queue ) |
Merges the second SpmV using CSR with the dot product and the computation of omega.
[in] | A | magma_c_matrix input matrix |
[in] | d1 | magmaFloatComplex_ptr temporary vector |
[in] | d2 | magmaFloatComplex_ptr temporary vector |
[in] | ds | magmaFloatComplex_ptr input vector s |
[in] | dt | magmaFloatComplex_ptr output vector t |
[in,out] | skp | magmaFloatComplex_ptr array for parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgmerge_xrbeta | ( | magma_int_t | n, |
magmaFloatComplex_ptr | d1, | ||
magmaFloatComplex_ptr | d2, | ||
magmaFloatComplex_ptr | rr, | ||
magmaFloatComplex_ptr | r, | ||
magmaFloatComplex_ptr | p, | ||
magmaFloatComplex_ptr | s, | ||
magmaFloatComplex_ptr | t, | ||
magmaFloatComplex_ptr | x, | ||
magmaFloatComplex_ptr | skp, | ||
magma_queue_t | queue ) |
Merges the second SpmV using CSR with the dot product and the computation of omega.
[in] | n | int dimension n |
[in] | d1 | magmaFloatComplex_ptr temporary vector |
[in] | d2 | magmaFloatComplex_ptr temporary vector |
[in] | rr | magmaFloatComplex_ptr input vector rr |
[in] | r | magmaFloatComplex_ptr input/output vector r |
[in] | p | magmaFloatComplex_ptr input vector p |
[in] | s | magmaFloatComplex_ptr input vector s |
[in] | t | magmaFloatComplex_ptr input vector t |
[out] | x | magmaFloatComplex_ptr output vector x |
[in] | skp | magmaFloatComplex_ptr array for parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgmerge1 | ( | magma_int_t | n, |
magmaFloatComplex_ptr | skp, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | r, | ||
magmaFloatComplex_ptr | p, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
p = beta*p p = p-omega*beta*v p = p+r
-> p = r + beta * ( p - omega * v )
[in] | n | int dimension n |
[in] | skp | magmaFloatComplex_ptr set of scalar parameters |
[in] | v | magmaFloatComplex_ptr input vector v |
[in] | r | magmaFloatComplex_ptr input vector r |
[in,out] | p | magmaFloatComplex_ptr input/output vector p |
[in] | queue | magma_queue_t queue to execute in. |
magma_int_t magma_cbicgmerge2 | ( | magma_int_t | n, |
magmaFloatComplex_ptr | skp, | ||
magmaFloatComplex_ptr | r, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | s, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
s=r s=s-alpha*v
-> s = r - alpha * v
[in] | n | int dimension n |
[in] | skp | magmaFloatComplex_ptr set of scalar parameters |
[in] | r | magmaFloatComplex_ptr input vector r |
[in] | v | magmaFloatComplex_ptr input vector v |
[out] | s | magmaFloatComplex_ptr output vector s |
[in] | queue | magma_queue_t queue to execute in. |
magma_int_t magma_cbicgmerge3 | ( | magma_int_t | n, |
magmaFloatComplex_ptr | skp, | ||
magmaFloatComplex_ptr | p, | ||
magmaFloatComplex_ptr | s, | ||
magmaFloatComplex_ptr | t, | ||
magmaFloatComplex_ptr | x, | ||
magmaFloatComplex_ptr | r, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
x=x+alpha*p x=x+omega*s r=s r=r-omega*t
-> x = x + alpha * p + omega * s -> r = s - omega * t
[in] | n | int dimension n |
[in] | skp | magmaFloatComplex_ptr set of scalar parameters |
[in] | p | magmaFloatComplex_ptr input p |
[in] | s | magmaFloatComplex_ptr input s |
[in] | t | magmaFloatComplex_ptr input t |
[in,out] | x | magmaFloatComplex_ptr input/output x |
[in,out] | r | magmaFloatComplex_ptr input/output r |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cbicgmerge4 | ( | magma_int_t | type, |
magmaFloatComplex_ptr | skp, | ||
magma_queue_t | queue ) |
Performs some parameter operations for the BiCGSTAB with scalars on GPU.
[in] | type | int kernel type |
[in,out] | skp | magmaFloatComplex_ptr vector with parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cmergeblockkrylov | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex_ptr | alpha, | ||
magmaFloatComplex_ptr | p, | ||
magmaFloatComplex_ptr | x, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
v = y / rho y = y / rho w = wt / psi z = z / psi
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | alpha | magmaFloatComplex_ptr matrix containing all SKP |
[in] | p | magmaFloatComplex_ptr search directions |
[in,out] | x | magmaFloatComplex_ptr approximation vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ccgmerge_spmv1 | ( | magma_c_matrix | A, |
magmaFloatComplex_ptr | d1, | ||
magmaFloatComplex_ptr | d2, | ||
magmaFloatComplex_ptr | dd, | ||
magmaFloatComplex_ptr | dz, | ||
magmaFloatComplex_ptr | skp, | ||
magma_queue_t | queue ) |
Merges the first SpmV using different formats with the dot product and the computation of rho.
[in] | A | magma_c_matrix input matrix |
[in] | d1 | magmaFloatComplex_ptr temporary vector |
[in] | d2 | magmaFloatComplex_ptr temporary vector |
[in] | dd | magmaFloatComplex_ptr input vector d |
[out] | dz | magmaFloatComplex_ptr input vector z |
[out] | skp | magmaFloatComplex_ptr array for parameters ( skp[3]=rho ) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ccgs_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | beta, | ||
magmaFloatComplex_ptr | r, | ||
magmaFloatComplex_ptr | q, | ||
magmaFloatComplex_ptr | u, | ||
magmaFloatComplex_ptr | p, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
u = r + beta q p = u + beta*(q + beta*p)
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | beta | magmaFloatComplex scalar |
[in] | r | magmaFloatComplex_ptr vector |
[in] | q | magmaFloatComplex_ptr vector |
[in,out] | u | magmaFloatComplex_ptr vector |
[in,out] | p | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ccgs_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex_ptr | r, | ||
magmaFloatComplex_ptr | u, | ||
magmaFloatComplex_ptr | p, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
u = r p = r
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | r | magmaFloatComplex_ptr vector |
[in,out] | u | magmaFloatComplex_ptr vector |
[in,out] | p | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ccgs_3 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | alpha, | ||
magmaFloatComplex_ptr | v_hat, | ||
magmaFloatComplex_ptr | u, | ||
magmaFloatComplex_ptr | q, | ||
magmaFloatComplex_ptr | t, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
q = u - alpha v_hat t = u + q
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | alpha | magmaFloatComplex scalar |
[in] | v_hat | magmaFloatComplex_ptr vector |
[in] | u | magmaFloatComplex_ptr vector |
[in,out] | q | magmaFloatComplex_ptr vector |
[in,out] | t | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ccgs_4 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | alpha, | ||
magmaFloatComplex_ptr | u_hat, | ||
magmaFloatComplex_ptr | t, | ||
magmaFloatComplex_ptr | x, | ||
magmaFloatComplex_ptr | r, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
x = x + alpha u_hat r = r -alpha*A u_hat = r -alpha*t
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | alpha | magmaFloatComplex scalar |
[in] | u_hat | magmaFloatComplex_ptr vector |
[in] | t | magmaFloatComplex_ptr vector |
[in,out] | x | magmaFloatComplex_ptr vector |
[in,out] | r | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cidr_smoothing_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex_ptr | drs, | ||
magmaFloatComplex_ptr | dr, | ||
magmaFloatComplex_ptr | dt, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
dt = drs - dr
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | drs | magmaFloatComplex_ptr vector |
[in] | dr | magmaFloatComplex_ptr vector |
[in,out] | dt | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cidr_smoothing_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | omega, | ||
magmaFloatComplex_ptr | dx, | ||
magmaFloatComplex_ptr | dxs, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
dxs = dxs - gamma*(dxs-dx)
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | omega | magmaFloatComplex scalar |
[in] | dx | magmaFloatComplex_ptr vector |
[in,out] | dxs | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cqmr_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | rho, | ||
magmaFloatComplex | psi, | ||
magmaFloatComplex_ptr | y, | ||
magmaFloatComplex_ptr | z, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | w, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
v = y / rho y = y / rho w = wt / psi z = z / psi
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | rho | magmaFloatComplex scalar |
[in] | psi | magmaFloatComplex scalar |
[in,out] | y | magmaFloatComplex_ptr vector |
[in,out] | z | magmaFloatComplex_ptr vector |
[in,out] | v | magmaFloatComplex_ptr vector |
[in,out] | w | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cqmr_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | pde, | ||
magmaFloatComplex | rde, | ||
magmaFloatComplex_ptr | y, | ||
magmaFloatComplex_ptr | z, | ||
magmaFloatComplex_ptr | p, | ||
magmaFloatComplex_ptr | q, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
p = y - pde * p q = z - rde * q
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | pde | magmaFloatComplex scalar |
[in] | rde | magmaFloatComplex scalar |
[in] | y | magmaFloatComplex_ptr vector |
[in] | z | magmaFloatComplex_ptr vector |
[in,out] | p | magmaFloatComplex_ptr vector |
[in,out] | q | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cqmr_3 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | beta, | ||
magmaFloatComplex_ptr | pt, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | y, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
v = pt - beta * v y = v
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | beta | magmaFloatComplex scalar |
[in] | pt | magmaFloatComplex_ptr vector |
[in,out] | v | magmaFloatComplex_ptr vector |
[in,out] | y | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cqmr_4 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | eta, | ||
magmaFloatComplex_ptr | p, | ||
magmaFloatComplex_ptr | pt, | ||
magmaFloatComplex_ptr | d, | ||
magmaFloatComplex_ptr | s, | ||
magmaFloatComplex_ptr | x, | ||
magmaFloatComplex_ptr | r, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
d = eta * p; s = eta * pt; x = x + d; r = r - s;
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | eta | magmaFloatComplex scalar |
[in] | p | magmaFloatComplex_ptr vector |
[in] | pt | magmaFloatComplex_ptr vector |
[in,out] | d | magmaFloatComplex_ptr vector |
[in,out] | s | magmaFloatComplex_ptr vector |
[in,out] | x | magmaFloatComplex_ptr vector |
[in,out] | r | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cqmr_5 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | eta, | ||
magmaFloatComplex | pds, | ||
magmaFloatComplex_ptr | p, | ||
magmaFloatComplex_ptr | pt, | ||
magmaFloatComplex_ptr | d, | ||
magmaFloatComplex_ptr | s, | ||
magmaFloatComplex_ptr | x, | ||
magmaFloatComplex_ptr | r, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
d = eta * p + pds * d; s = eta * pt + pds * s; x = x + d; r = r - s;
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | eta | magmaFloatComplex scalar |
[in] | pds | magmaFloatComplex scalar |
[in] | p | magmaFloatComplex_ptr vector |
[in] | pt | magmaFloatComplex_ptr vector |
[in,out] | d | magmaFloatComplex_ptr vector |
[in,out] | s | magmaFloatComplex_ptr vector |
[in,out] | x | magmaFloatComplex_ptr vector |
[in,out] | r | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cqmr_6 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | beta, | ||
magmaFloatComplex | rho, | ||
magmaFloatComplex | psi, | ||
magmaFloatComplex_ptr | y, | ||
magmaFloatComplex_ptr | z, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | w, | ||
magmaFloatComplex_ptr | wt, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
wt = wt - conj(beta) * w v = y / rho y = y / rho w = wt / psi z = wt / psi
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | beta | magmaFloatComplex scalar |
[in] | rho | magmaFloatComplex scalar |
[in] | psi | magmaFloatComplex scalar |
[in,out] | y | magmaFloatComplex_ptr vector |
[in,out] | z | magmaFloatComplex_ptr vector |
[in,out] | v | magmaFloatComplex_ptr vector |
[in,out] | w | magmaFloatComplex_ptr vector |
[in,out] | wt | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cqmr_7 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | beta, | ||
magmaFloatComplex_ptr | pt, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | vt, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
vt = pt - beta * v
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | beta | magmaFloatComplex scalar |
[in] | pt | magmaFloatComplex_ptr vector |
[in,out] | v | magmaFloatComplex_ptr vector |
[in,out] | vt | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cqmr_8 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | rho, | ||
magmaFloatComplex | psi, | ||
magmaFloatComplex_ptr | vt, | ||
magmaFloatComplex_ptr | wt, | ||
magmaFloatComplex_ptr | y, | ||
magmaFloatComplex_ptr | z, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | w, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
v = y / rho y = y / rho w = wt / psi z = z / psi
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | rho | magmaFloatComplex scalar |
[in] | psi | magmaFloatComplex scalar |
[in] | vt | magmaFloatComplex_ptr vector |
[in] | wt | magmaFloatComplex_ptr vector |
[in,out] | y | magmaFloatComplex_ptr vector |
[in,out] | z | magmaFloatComplex_ptr vector |
[in,out] | v | magmaFloatComplex_ptr vector |
[in,out] | w | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ctfqmr_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | alpha, | ||
magmaFloatComplex | sigma, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | Au, | ||
magmaFloatComplex_ptr | u_m, | ||
magmaFloatComplex_ptr | pu_m, | ||
magmaFloatComplex_ptr | u_mp1, | ||
magmaFloatComplex_ptr | w, | ||
magmaFloatComplex_ptr | d, | ||
magmaFloatComplex_ptr | Ad, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
u_mp1 = u_mp1 - alpha*v; w = w - alpha*Au; d = pu_m + sigma*d; Ad = Au + sigma*Ad;
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | alpha | magmaFloatComplex scalar |
[in] | sigma | magmaFloatComplex scalar |
[in] | v | magmaFloatComplex_ptr vector |
[in] | Au | magmaFloatComplex_ptr vector |
[in,out] | u_m | magmaFloatComplex_ptr vector |
[in,out] | pu_m | magmaFloatComplex_ptr vector |
[in,out] | u_mp1 | magmaFloatComplex_ptr vector |
[in,out] | w | magmaFloatComplex_ptr vector |
[in,out] | d | magmaFloatComplex_ptr vector |
[in,out] | Ad | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ctfqmr_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | eta, | ||
magmaFloatComplex_ptr | d, | ||
magmaFloatComplex_ptr | Ad, | ||
magmaFloatComplex_ptr | x, | ||
magmaFloatComplex_ptr | r, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
x = x + eta * d r = r - eta * Ad
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | eta | magmaFloatComplex scalar |
[in] | d | magmaFloatComplex_ptr vector |
[in] | Ad | magmaFloatComplex_ptr vector |
[in,out] | x | magmaFloatComplex_ptr vector |
[in,out] | r | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ctfqmr_3 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | beta, | ||
magmaFloatComplex_ptr | w, | ||
magmaFloatComplex_ptr | u_m, | ||
magmaFloatComplex_ptr | u_mp1, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
u_mp1 = w + beta*u_mp1
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | beta | magmaFloatComplex scalar |
[in] | w | magmaFloatComplex_ptr vector |
[in] | u_m | magmaFloatComplex_ptr vector |
[in,out] | u_mp1 | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ctfqmr_4 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | beta, | ||
magmaFloatComplex_ptr | Au_new, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | Au, | ||
magma_queue_t | queue ) |
Merges multiple operations into one kernel:
v = Au_new + beta*(Au+beta*v); Au = Au_new
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | beta | magmaFloatComplex scalar |
[in] | Au_new | magmaFloatComplex_ptr vector |
[in,out] | v | magmaFloatComplex_ptr vector |
[in,out] | Au | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_ctfqmr_5 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaFloatComplex | alpha, | ||
magmaFloatComplex | sigma, | ||
magmaFloatComplex_ptr | v, | ||
magmaFloatComplex_ptr | Au, | ||
magmaFloatComplex_ptr | u_mp1, | ||
magmaFloatComplex_ptr | w, | ||
magmaFloatComplex_ptr | d, | ||
magmaFloatComplex_ptr | Ad, | ||
magma_queue_t | queue ) |
Mergels multiple operations into one kernel:
w = w - alpha*Au; d = pu_m + sigma*d; Ad = Au + sigma*Ad;
[in] | num_rows | magma_int_t dimension m |
[in] | num_cols | magma_int_t dimension n |
[in] | alpha | magmaFloatComplex scalar |
[in] | sigma | magmaFloatComplex scalar |
[in] | v | magmaFloatComplex_ptr vector |
[in] | Au | magmaFloatComplex_ptr vector |
[in,out] | u_mp1 | magmaFloatComplex_ptr vector |
[in,out] | w | magmaFloatComplex_ptr vector |
[in,out] | d | magmaFloatComplex_ptr vector |
[in,out] | Ad | magmaFloatComplex_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cparic_csr | ( | magma_c_matrix | A, |
magma_c_matrix | A_CSR, | ||
magma_queue_t | queue ) |
This routine iteratively computes an incomplete LU factorization.
For reference, see: E. Chow and A. Patel: "Fine-grained Parallel Incomplete LU Factorization", SIAM Journal on Scientific Computing, 37, C169-C193 (2015). This routine was used in the ISC 2015 paper: E. Chow et al.: "Asynchronous Iterative Algorithm for Computing Incomplete Factorizations on GPUs", ISC High Performance 2015, LNCS 9137, pp. 1-16, 2015.
The input format of the initial guess matrix A is Magma_CSRCOO, A_CSR is CSR or CSRCOO format.
[in] | A | magma_c_matrix input matrix A - initial guess (lower triangular) |
[in,out] | A_CSR | magma_c_matrix input/output matrix containing the IC approximation |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cparilu_csr | ( | magma_c_matrix | A, |
magma_c_matrix | L, | ||
magma_c_matrix | U, | ||
magma_queue_t | queue ) |
This routine iteratively computes an incomplete LU factorization.
For reference, see: E. Chow and A. Patel: "Fine-grained Parallel Incomplete LU Factorization", SIAM Journal on Scientific Computing, 37, C169-C193 (2015). This routine was used in the ISC 2015 paper: E. Chow et al.: "Asynchronous Iterative Algorithm for Computing Incomplete Factorizations on GPUs", ISC High Performance 2015, LNCS 9137, pp. 1-16, 2015.
The input format of the system matrix is COO, the lower triangular factor L is stored in CSR, the upper triangular factor U is transposed, then also stored in CSR (equivalent to CSC format for the non-transposed U). Every component of L and U is handled by one thread.
[in] | A | magma_c_matrix input matrix A determing initial guess & processing order |
[in,out] | L | magma_c_matrix input/output matrix L containing the lower triangular factor |
[in,out] | U | magma_c_matrix input/output matrix U containing the upper triangular factor |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cparilut_sweep_gpu | ( | magma_c_matrix * | A, |
magma_c_matrix * | L, | ||
magma_c_matrix * | U, | ||
magma_queue_t | queue ) |
This function does an ParILUT sweep.
The difference to the ParILU sweep is that the nonzero pattern of A and the incomplete factors L and U can be different. The pattern determing which elements are iterated are hence the pattern of L and U, not A. L has a unit diagonal.
This is the GPU version of the asynchronous ParILUT sweep.
[in] | A | magma_c_matrix* System matrix. The format is sorted CSR. |
[in,out] | L | magma_c_matrix* Current approximation for the lower triangular factor The format is MAGMA_CSRCOO. This is sorted CSR plus the rowindexes being stored. |
[in,out] | U | magma_c_matrix* Current approximation for the lower triangular factor The format is MAGMA_CSRCOO. This is sorted CSR plus the rowindexes being stored. |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cparilut_residuals_gpu | ( | magma_c_matrix | A, |
magma_c_matrix | L, | ||
magma_c_matrix | U, | ||
magma_c_matrix * | R, | ||
magma_queue_t | queue ) |
This function computes the ILU residual in the locations included in the sparsity pattern of R.
[in] | A | magma_c_matrix System matrix. The format is sorted CSR. |
[in] | L | magma_c_matrix Current approximation for the lower triangular factor The format is MAGMA_CSRCOO. This is sorted CSR plus the rowindexes being stored. |
[in] | U | magma_c_matrix Current approximation for the lower triangular factor The format is MAGMA_CSRCOO. This is sorted CSR plus the rowindexes being stored. |
[in,out] | R | magma_c_matrix* Sparsity pattern on which the ILU residual is computed. R is in COO format. On output, R contains the ILU residual. |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cvalinit_gpu | ( | magma_int_t | num_el, |
magmaFloatComplex_ptr | dval, | ||
magma_queue_t | queue ) |
Initializes a device array with zero.
[in] | num_el | magma_int_t size of array |
[in,out] | dval | magmaFloatComplex_ptr array to initialize |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_cindexinit_gpu | ( | magma_int_t | num_el, |
magmaIndex_ptr | dind, | ||
magma_queue_t | queue ) |
Initializes a device array with zero.
[in] | num_el | magma_int_t size of array |
[in,out] | dind | magmaIndex_ptr array to initialize |
[in] | queue | magma_queue_t Queue to execute in. |