![]() |
MAGMA
2.4.0
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
magma_int_t | magma_dbajac_csr (magma_int_t localiters, magma_d_matrix D, magma_d_matrix R, magma_d_matrix b, magma_d_matrix *x, magma_queue_t queue) |
This routine is a block-asynchronous Jacobi iteration performing s local Jacobi-updates within the block. More... | |
magma_int_t | magma_dbajac_csr_overlap (magma_int_t localiters, magma_int_t matrices, magma_int_t overlap, magma_d_matrix *D, magma_d_matrix *R, magma_d_matrix b, magma_d_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. More... | |
magma_int_t | magma_dcompact (magma_int_t m, magma_int_t n, magmaDouble_ptr dA, magma_int_t ldda, magmaDouble_ptr dnorms, double 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. More... | |
magma_int_t | magma_djacobisetup_vector_gpu (magma_int_t num_rows, magma_d_matrix b, magma_d_matrix d, magma_d_matrix c, magma_d_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. More... | |
magma_int_t | magma_dlobpcg_maxpy (magma_int_t num_rows, magma_int_t num_vecs, magmaDouble_ptr X, magmaDouble_ptr Y, magma_queue_t queue) |
This routine computes a axpy for a mxn matrix: More... | |
magma_int_t | magma_dbicgstab_1 (magma_int_t num_rows, magma_int_t num_cols, double beta, double omega, magmaDouble_ptr r, magmaDouble_ptr v, magmaDouble_ptr p, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dbicgstab_2 (magma_int_t num_rows, magma_int_t num_cols, double alpha, magmaDouble_ptr r, magmaDouble_ptr v, magmaDouble_ptr s, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dbicgstab_3 (magma_int_t num_rows, magma_int_t num_cols, double alpha, double omega, magmaDouble_ptr p, magmaDouble_ptr s, magmaDouble_ptr t, magmaDouble_ptr x, magmaDouble_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dbicgstab_4 (magma_int_t num_rows, magma_int_t num_cols, double alpha, double omega, magmaDouble_ptr y, magmaDouble_ptr z, magmaDouble_ptr s, magmaDouble_ptr t, magmaDouble_ptr x, magmaDouble_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dbicgmerge_spmv1 (magma_d_matrix A, magmaDouble_ptr d1, magmaDouble_ptr d2, magmaDouble_ptr dp, magmaDouble_ptr dr, magmaDouble_ptr dv, magmaDouble_ptr skp, magma_queue_t queue) |
Merges the first SpmV using CSR with the dot product and the computation of alpha. More... | |
magma_int_t | magma_dbicgmerge_spmv2 (magma_d_matrix A, magmaDouble_ptr d1, magmaDouble_ptr d2, magmaDouble_ptr ds, magmaDouble_ptr dt, magmaDouble_ptr skp, magma_queue_t queue) |
Merges the second SpmV using CSR with the dot product and the computation of omega. More... | |
magma_int_t | magma_dbicgmerge_xrbeta (magma_int_t n, magmaDouble_ptr d1, magmaDouble_ptr d2, magmaDouble_ptr rr, magmaDouble_ptr r, magmaDouble_ptr p, magmaDouble_ptr s, magmaDouble_ptr t, magmaDouble_ptr x, magmaDouble_ptr skp, magma_queue_t queue) |
Merges the second SpmV using CSR with the dot product and the computation of omega. More... | |
magma_int_t | magma_dbicgmerge1 (magma_int_t n, magmaDouble_ptr skp, magmaDouble_ptr v, magmaDouble_ptr r, magmaDouble_ptr p, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dbicgmerge2 (magma_int_t n, magmaDouble_ptr skp, magmaDouble_ptr r, magmaDouble_ptr v, magmaDouble_ptr s, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dbicgmerge3 (magma_int_t n, magmaDouble_ptr skp, magmaDouble_ptr p, magmaDouble_ptr s, magmaDouble_ptr t, magmaDouble_ptr x, magmaDouble_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dbicgmerge4 (magma_int_t type, magmaDouble_ptr skp, magma_queue_t queue) |
Performs some parameter operations for the BiCGSTAB with scalars on GPU. More... | |
magma_int_t | magma_dmergeblockkrylov (magma_int_t num_rows, magma_int_t num_cols, magmaDouble_ptr alpha, magmaDouble_ptr p, magmaDouble_ptr x, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dcgmerge_spmv1 (magma_d_matrix A, magmaDouble_ptr d1, magmaDouble_ptr d2, magmaDouble_ptr dd, magmaDouble_ptr dz, magmaDouble_ptr skp, magma_queue_t queue) |
Merges the first SpmV using different formats with the dot product and the computation of rho. More... | |
magma_int_t | magma_dcgs_1 (magma_int_t num_rows, magma_int_t num_cols, double beta, magmaDouble_ptr r, magmaDouble_ptr q, magmaDouble_ptr u, magmaDouble_ptr p, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dcgs_2 (magma_int_t num_rows, magma_int_t num_cols, magmaDouble_ptr r, magmaDouble_ptr u, magmaDouble_ptr p, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dcgs_3 (magma_int_t num_rows, magma_int_t num_cols, double alpha, magmaDouble_ptr v_hat, magmaDouble_ptr u, magmaDouble_ptr q, magmaDouble_ptr t, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dcgs_4 (magma_int_t num_rows, magma_int_t num_cols, double alpha, magmaDouble_ptr u_hat, magmaDouble_ptr t, magmaDouble_ptr x, magmaDouble_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_didr_smoothing_1 (magma_int_t num_rows, magma_int_t num_cols, magmaDouble_ptr drs, magmaDouble_ptr dr, magmaDouble_ptr dt, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_didr_smoothing_2 (magma_int_t num_rows, magma_int_t num_cols, double omega, magmaDouble_ptr dx, magmaDouble_ptr dxs, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dqmr_1 (magma_int_t num_rows, magma_int_t num_cols, double rho, double psi, magmaDouble_ptr y, magmaDouble_ptr z, magmaDouble_ptr v, magmaDouble_ptr w, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dqmr_2 (magma_int_t num_rows, magma_int_t num_cols, double pde, double rde, magmaDouble_ptr y, magmaDouble_ptr z, magmaDouble_ptr p, magmaDouble_ptr q, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dqmr_3 (magma_int_t num_rows, magma_int_t num_cols, double beta, magmaDouble_ptr pt, magmaDouble_ptr v, magmaDouble_ptr y, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dqmr_4 (magma_int_t num_rows, magma_int_t num_cols, double eta, magmaDouble_ptr p, magmaDouble_ptr pt, magmaDouble_ptr d, magmaDouble_ptr s, magmaDouble_ptr x, magmaDouble_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dqmr_5 (magma_int_t num_rows, magma_int_t num_cols, double eta, double pds, magmaDouble_ptr p, magmaDouble_ptr pt, magmaDouble_ptr d, magmaDouble_ptr s, magmaDouble_ptr x, magmaDouble_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dqmr_6 (magma_int_t num_rows, magma_int_t num_cols, double beta, double rho, double psi, magmaDouble_ptr y, magmaDouble_ptr z, magmaDouble_ptr v, magmaDouble_ptr w, magmaDouble_ptr wt, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dqmr_7 (magma_int_t num_rows, magma_int_t num_cols, double beta, magmaDouble_ptr pt, magmaDouble_ptr v, magmaDouble_ptr vt, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dqmr_8 (magma_int_t num_rows, magma_int_t num_cols, double rho, double psi, magmaDouble_ptr vt, magmaDouble_ptr wt, magmaDouble_ptr y, magmaDouble_ptr z, magmaDouble_ptr v, magmaDouble_ptr w, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dtfqmr_1 (magma_int_t num_rows, magma_int_t num_cols, double alpha, double sigma, magmaDouble_ptr v, magmaDouble_ptr Au, magmaDouble_ptr u_m, magmaDouble_ptr pu_m, magmaDouble_ptr u_mp1, magmaDouble_ptr w, magmaDouble_ptr d, magmaDouble_ptr Ad, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dtfqmr_2 (magma_int_t num_rows, magma_int_t num_cols, double eta, magmaDouble_ptr d, magmaDouble_ptr Ad, magmaDouble_ptr x, magmaDouble_ptr r, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dtfqmr_3 (magma_int_t num_rows, magma_int_t num_cols, double beta, magmaDouble_ptr w, magmaDouble_ptr u_m, magmaDouble_ptr u_mp1, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dtfqmr_4 (magma_int_t num_rows, magma_int_t num_cols, double beta, magmaDouble_ptr Au_new, magmaDouble_ptr v, magmaDouble_ptr Au, magma_queue_t queue) |
Merges multiple operations into one kernel: More... | |
magma_int_t | magma_dtfqmr_5 (magma_int_t num_rows, magma_int_t num_cols, double alpha, double sigma, magmaDouble_ptr v, magmaDouble_ptr Au, magmaDouble_ptr u_mp1, magmaDouble_ptr w, magmaDouble_ptr d, magmaDouble_ptr Ad, magma_queue_t queue) |
Mergels multiple operations into one kernel: More... | |
magma_int_t | magma_dparic_csr (magma_d_matrix A, magma_d_matrix A_CSR, magma_queue_t queue) |
This routine iteratively computes an incomplete LU factorization. More... | |
magma_int_t | magma_dparilu_csr (magma_d_matrix A, magma_d_matrix L, magma_d_matrix U, magma_queue_t queue) |
This routine iteratively computes an incomplete LU factorization. More... | |
magma_int_t | magma_dparilut_sweep_gpu (magma_d_matrix *A, magma_d_matrix *L, magma_d_matrix *U, magma_queue_t queue) |
This function does an ParILUT sweep. More... | |
magma_int_t | magma_dparilut_residuals_gpu (magma_d_matrix A, magma_d_matrix L, magma_d_matrix U, magma_d_matrix *R, magma_queue_t queue) |
This function computes the ILU residual in the locations included in the sparsity pattern of R. More... | |
magma_int_t | magma_dvalinit_gpu (magma_int_t num_el, magmaDouble_ptr dval, magma_queue_t queue) |
Initializes a device array with zero. More... | |
magma_int_t | magma_dindexinit_gpu (magma_int_t num_el, magmaIndex_ptr dind, magma_queue_t queue) |
Initializes a device array with zero. More... | |
magma_int_t magma_dbajac_csr | ( | magma_int_t | localiters, |
magma_d_matrix | D, | ||
magma_d_matrix | R, | ||
magma_d_matrix | b, | ||
magma_d_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_d_matrix input matrix with diagonal blocks |
[in] | R | magma_d_matrix input matrix with non-diagonal parts |
[in] | b | magma_d_matrix RHS |
[in] | x | magma_d_matrix* iterate/solution |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbajac_csr_overlap | ( | magma_int_t | localiters, |
magma_int_t | matrices, | ||
magma_int_t | overlap, | ||
magma_d_matrix * | D, | ||
magma_d_matrix * | R, | ||
magma_d_matrix | b, | ||
magma_d_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_d_matrix* set of matrices with diagonal blocks |
[in] | R | magma_d_matrix* set of matrices with non-diagonal parts |
[in] | b | magma_d_matrix RHS |
[in] | x | magma_d_matrix* iterate/solution |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dcompact | ( | magma_int_t | m, |
magma_int_t | n, | ||
magmaDouble_ptr | dA, | ||
magma_int_t | ldda, | ||
magmaDouble_ptr | dnorms, | ||
double | 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 DOUBLE PRECISION 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 | DOUBLE PRECISION 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_djacobisetup_vector_gpu | ( | magma_int_t | num_rows, |
magma_d_matrix | b, | ||
magma_d_matrix | d, | ||
magma_d_matrix | c, | ||
magma_d_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_d_matrix RHS b |
[in] | d | magma_d_matrix vector with diagonal entries |
[out] | c | magma_d_matrix* c = D^(-1) * b |
[out] | x | magma_d_matrix* iteration vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dlobpcg_maxpy | ( | magma_int_t | num_rows, |
magma_int_t | num_vecs, | ||
magmaDouble_ptr | X, | ||
magmaDouble_ptr | Y, | ||
magma_queue_t | queue | ||
) |
This routine computes a axpy for a mxn matrix:
Y = X + Y
It replaces: magma_daxpy(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 | magmaDouble_ptr input vector X |
[in,out] | Y | magmaDouble_ptr input/output vector Y |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgstab_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | beta, | ||
double | omega, | ||
magmaDouble_ptr | r, | ||
magmaDouble_ptr | v, | ||
magmaDouble_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 | double scalar |
[in] | omega | double scalar |
[in] | r | magmaDouble_ptr vector |
[in] | v | magmaDouble_ptr vector |
[in,out] | p | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgstab_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | alpha, | ||
magmaDouble_ptr | r, | ||
magmaDouble_ptr | v, | ||
magmaDouble_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 | double scalar |
[in] | r | magmaDouble_ptr vector |
[in] | v | magmaDouble_ptr vector |
[in,out] | s | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgstab_3 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | alpha, | ||
double | omega, | ||
magmaDouble_ptr | p, | ||
magmaDouble_ptr | s, | ||
magmaDouble_ptr | t, | ||
magmaDouble_ptr | x, | ||
magmaDouble_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 | double scalar |
[in] | omega | double scalar |
[in] | p | magmaDouble_ptr vector |
[in] | s | magmaDouble_ptr vector |
[in] | t | magmaDouble_ptr vector |
[in,out] | x | magmaDouble_ptr vector |
[in,out] | r | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgstab_4 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | alpha, | ||
double | omega, | ||
magmaDouble_ptr | y, | ||
magmaDouble_ptr | z, | ||
magmaDouble_ptr | s, | ||
magmaDouble_ptr | t, | ||
magmaDouble_ptr | x, | ||
magmaDouble_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 | double scalar |
[in] | omega | double scalar |
[in] | y | magmaDouble_ptr vector |
[in] | z | magmaDouble_ptr vector |
[in] | s | magmaDouble_ptr vector |
[in] | t | magmaDouble_ptr vector |
[in,out] | x | magmaDouble_ptr vector |
[in,out] | r | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgmerge_spmv1 | ( | magma_d_matrix | A, |
magmaDouble_ptr | d1, | ||
magmaDouble_ptr | d2, | ||
magmaDouble_ptr | dp, | ||
magmaDouble_ptr | dr, | ||
magmaDouble_ptr | dv, | ||
magmaDouble_ptr | skp, | ||
magma_queue_t | queue | ||
) |
Merges the first SpmV using CSR with the dot product and the computation of alpha.
[in] | A | magma_d_matrix system matrix |
[in] | d1 | magmaDouble_ptr temporary vector |
[in] | d2 | magmaDouble_ptr temporary vector |
[in] | dp | magmaDouble_ptr input vector p |
[in] | dr | magmaDouble_ptr input vector r |
[in] | dv | magmaDouble_ptr output vector v |
[in,out] | skp | magmaDouble_ptr array for parameters ( skp[0]=alpha ) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgmerge_spmv2 | ( | magma_d_matrix | A, |
magmaDouble_ptr | d1, | ||
magmaDouble_ptr | d2, | ||
magmaDouble_ptr | ds, | ||
magmaDouble_ptr | dt, | ||
magmaDouble_ptr | skp, | ||
magma_queue_t | queue | ||
) |
Merges the second SpmV using CSR with the dot product and the computation of omega.
[in] | A | magma_d_matrix input matrix |
[in] | d1 | magmaDouble_ptr temporary vector |
[in] | d2 | magmaDouble_ptr temporary vector |
[in] | ds | magmaDouble_ptr input vector s |
[in] | dt | magmaDouble_ptr output vector t |
[in,out] | skp | magmaDouble_ptr array for parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgmerge_xrbeta | ( | magma_int_t | n, |
magmaDouble_ptr | d1, | ||
magmaDouble_ptr | d2, | ||
magmaDouble_ptr | rr, | ||
magmaDouble_ptr | r, | ||
magmaDouble_ptr | p, | ||
magmaDouble_ptr | s, | ||
magmaDouble_ptr | t, | ||
magmaDouble_ptr | x, | ||
magmaDouble_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 | magmaDouble_ptr temporary vector |
[in] | d2 | magmaDouble_ptr temporary vector |
[in] | rr | magmaDouble_ptr input vector rr |
[in] | r | magmaDouble_ptr input/output vector r |
[in] | p | magmaDouble_ptr input vector p |
[in] | s | magmaDouble_ptr input vector s |
[in] | t | magmaDouble_ptr input vector t |
[out] | x | magmaDouble_ptr output vector x |
[in] | skp | magmaDouble_ptr array for parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgmerge1 | ( | magma_int_t | n, |
magmaDouble_ptr | skp, | ||
magmaDouble_ptr | v, | ||
magmaDouble_ptr | r, | ||
magmaDouble_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 | magmaDouble_ptr set of scalar parameters |
[in] | v | magmaDouble_ptr input vector v |
[in] | r | magmaDouble_ptr input vector r |
[in,out] | p | magmaDouble_ptr input/output vector p |
[in] | queue | magma_queue_t queue to execute in. |
magma_int_t magma_dbicgmerge2 | ( | magma_int_t | n, |
magmaDouble_ptr | skp, | ||
magmaDouble_ptr | r, | ||
magmaDouble_ptr | v, | ||
magmaDouble_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 | magmaDouble_ptr set of scalar parameters |
[in] | r | magmaDouble_ptr input vector r |
[in] | v | magmaDouble_ptr input vector v |
[out] | s | magmaDouble_ptr output vector s |
[in] | queue | magma_queue_t queue to execute in. |
magma_int_t magma_dbicgmerge3 | ( | magma_int_t | n, |
magmaDouble_ptr | skp, | ||
magmaDouble_ptr | p, | ||
magmaDouble_ptr | s, | ||
magmaDouble_ptr | t, | ||
magmaDouble_ptr | x, | ||
magmaDouble_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 | magmaDouble_ptr set of scalar parameters |
[in] | p | magmaDouble_ptr input p |
[in] | s | magmaDouble_ptr input s |
[in] | t | magmaDouble_ptr input t |
[in,out] | x | magmaDouble_ptr input/output x |
[in,out] | r | magmaDouble_ptr input/output r |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dbicgmerge4 | ( | magma_int_t | type, |
magmaDouble_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 | magmaDouble_ptr vector with parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dmergeblockkrylov | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaDouble_ptr | alpha, | ||
magmaDouble_ptr | p, | ||
magmaDouble_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 | magmaDouble_ptr matrix containing all SKP |
[in] | p | magmaDouble_ptr search directions |
[in,out] | x | magmaDouble_ptr approximation vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dcgmerge_spmv1 | ( | magma_d_matrix | A, |
magmaDouble_ptr | d1, | ||
magmaDouble_ptr | d2, | ||
magmaDouble_ptr | dd, | ||
magmaDouble_ptr | dz, | ||
magmaDouble_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_d_matrix input matrix |
[in] | d1 | magmaDouble_ptr temporary vector |
[in] | d2 | magmaDouble_ptr temporary vector |
[in] | dd | magmaDouble_ptr input vector d |
[out] | dz | magmaDouble_ptr input vector z |
[out] | skp | magmaDouble_ptr array for parameters ( skp[3]=rho ) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dcgs_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | beta, | ||
magmaDouble_ptr | r, | ||
magmaDouble_ptr | q, | ||
magmaDouble_ptr | u, | ||
magmaDouble_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 | double scalar |
[in] | r | magmaDouble_ptr vector |
[in] | q | magmaDouble_ptr vector |
[in,out] | u | magmaDouble_ptr vector |
[in,out] | p | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dcgs_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaDouble_ptr | r, | ||
magmaDouble_ptr | u, | ||
magmaDouble_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 | magmaDouble_ptr vector |
[in,out] | u | magmaDouble_ptr vector |
[in,out] | p | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dcgs_3 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | alpha, | ||
magmaDouble_ptr | v_hat, | ||
magmaDouble_ptr | u, | ||
magmaDouble_ptr | q, | ||
magmaDouble_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 | double scalar |
[in] | v_hat | magmaDouble_ptr vector |
[in] | u | magmaDouble_ptr vector |
[in,out] | q | magmaDouble_ptr vector |
[in,out] | t | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dcgs_4 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | alpha, | ||
magmaDouble_ptr | u_hat, | ||
magmaDouble_ptr | t, | ||
magmaDouble_ptr | x, | ||
magmaDouble_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 | double scalar |
[in] | u_hat | magmaDouble_ptr vector |
[in] | t | magmaDouble_ptr vector |
[in,out] | x | magmaDouble_ptr vector |
[in,out] | r | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_didr_smoothing_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
magmaDouble_ptr | drs, | ||
magmaDouble_ptr | dr, | ||
magmaDouble_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 | magmaDouble_ptr vector |
[in] | dr | magmaDouble_ptr vector |
[in,out] | dt | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_didr_smoothing_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | omega, | ||
magmaDouble_ptr | dx, | ||
magmaDouble_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 | double scalar |
[in] | dx | magmaDouble_ptr vector |
[in,out] | dxs | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dqmr_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | rho, | ||
double | psi, | ||
magmaDouble_ptr | y, | ||
magmaDouble_ptr | z, | ||
magmaDouble_ptr | v, | ||
magmaDouble_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 | double scalar |
[in] | psi | double scalar |
[in,out] | y | magmaDouble_ptr vector |
[in,out] | z | magmaDouble_ptr vector |
[in,out] | v | magmaDouble_ptr vector |
[in,out] | w | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dqmr_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | pde, | ||
double | rde, | ||
magmaDouble_ptr | y, | ||
magmaDouble_ptr | z, | ||
magmaDouble_ptr | p, | ||
magmaDouble_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 | double scalar |
[in] | rde | double scalar |
[in] | y | magmaDouble_ptr vector |
[in] | z | magmaDouble_ptr vector |
[in,out] | p | magmaDouble_ptr vector |
[in,out] | q | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dqmr_3 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | beta, | ||
magmaDouble_ptr | pt, | ||
magmaDouble_ptr | v, | ||
magmaDouble_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 | double scalar |
[in] | pt | magmaDouble_ptr vector |
[in,out] | v | magmaDouble_ptr vector |
[in,out] | y | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dqmr_4 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | eta, | ||
magmaDouble_ptr | p, | ||
magmaDouble_ptr | pt, | ||
magmaDouble_ptr | d, | ||
magmaDouble_ptr | s, | ||
magmaDouble_ptr | x, | ||
magmaDouble_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 | double scalar |
[in] | p | magmaDouble_ptr vector |
[in] | pt | magmaDouble_ptr vector |
[in,out] | d | magmaDouble_ptr vector |
[in,out] | s | magmaDouble_ptr vector |
[in,out] | x | magmaDouble_ptr vector |
[in,out] | r | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dqmr_5 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | eta, | ||
double | pds, | ||
magmaDouble_ptr | p, | ||
magmaDouble_ptr | pt, | ||
magmaDouble_ptr | d, | ||
magmaDouble_ptr | s, | ||
magmaDouble_ptr | x, | ||
magmaDouble_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 | double scalar |
[in] | pds | double scalar |
[in] | p | magmaDouble_ptr vector |
[in] | pt | magmaDouble_ptr vector |
[in,out] | d | magmaDouble_ptr vector |
[in,out] | s | magmaDouble_ptr vector |
[in,out] | x | magmaDouble_ptr vector |
[in,out] | r | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dqmr_6 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | beta, | ||
double | rho, | ||
double | psi, | ||
magmaDouble_ptr | y, | ||
magmaDouble_ptr | z, | ||
magmaDouble_ptr | v, | ||
magmaDouble_ptr | w, | ||
magmaDouble_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 | double scalar |
[in] | rho | double scalar |
[in] | psi | double scalar |
[in,out] | y | magmaDouble_ptr vector |
[in,out] | z | magmaDouble_ptr vector |
[in,out] | v | magmaDouble_ptr vector |
[in,out] | w | magmaDouble_ptr vector |
[in,out] | wt | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dqmr_7 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | beta, | ||
magmaDouble_ptr | pt, | ||
magmaDouble_ptr | v, | ||
magmaDouble_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 | double scalar |
[in] | pt | magmaDouble_ptr vector |
[in,out] | v | magmaDouble_ptr vector |
[in,out] | vt | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dqmr_8 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | rho, | ||
double | psi, | ||
magmaDouble_ptr | vt, | ||
magmaDouble_ptr | wt, | ||
magmaDouble_ptr | y, | ||
magmaDouble_ptr | z, | ||
magmaDouble_ptr | v, | ||
magmaDouble_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 | double scalar |
[in] | psi | double scalar |
[in] | vt | magmaDouble_ptr vector |
[in] | wt | magmaDouble_ptr vector |
[in,out] | y | magmaDouble_ptr vector |
[in,out] | z | magmaDouble_ptr vector |
[in,out] | v | magmaDouble_ptr vector |
[in,out] | w | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dtfqmr_1 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | alpha, | ||
double | sigma, | ||
magmaDouble_ptr | v, | ||
magmaDouble_ptr | Au, | ||
magmaDouble_ptr | u_m, | ||
magmaDouble_ptr | pu_m, | ||
magmaDouble_ptr | u_mp1, | ||
magmaDouble_ptr | w, | ||
magmaDouble_ptr | d, | ||
magmaDouble_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 | double scalar |
[in] | sigma | double scalar |
[in] | v | magmaDouble_ptr vector |
[in] | Au | magmaDouble_ptr vector |
[in,out] | u_m | magmaDouble_ptr vector |
[in,out] | pu_m | magmaDouble_ptr vector |
[in,out] | u_mp1 | magmaDouble_ptr vector |
[in,out] | w | magmaDouble_ptr vector |
[in,out] | d | magmaDouble_ptr vector |
[in,out] | Ad | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dtfqmr_2 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | eta, | ||
magmaDouble_ptr | d, | ||
magmaDouble_ptr | Ad, | ||
magmaDouble_ptr | x, | ||
magmaDouble_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 | double scalar |
[in] | d | magmaDouble_ptr vector |
[in] | Ad | magmaDouble_ptr vector |
[in,out] | x | magmaDouble_ptr vector |
[in,out] | r | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dtfqmr_3 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | beta, | ||
magmaDouble_ptr | w, | ||
magmaDouble_ptr | u_m, | ||
magmaDouble_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 | double scalar |
[in] | w | magmaDouble_ptr vector |
[in] | u_m | magmaDouble_ptr vector |
[in,out] | u_mp1 | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dtfqmr_4 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | beta, | ||
magmaDouble_ptr | Au_new, | ||
magmaDouble_ptr | v, | ||
magmaDouble_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 | double scalar |
[in] | Au_new | magmaDouble_ptr vector |
[in,out] | v | magmaDouble_ptr vector |
[in,out] | Au | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dtfqmr_5 | ( | magma_int_t | num_rows, |
magma_int_t | num_cols, | ||
double | alpha, | ||
double | sigma, | ||
magmaDouble_ptr | v, | ||
magmaDouble_ptr | Au, | ||
magmaDouble_ptr | u_mp1, | ||
magmaDouble_ptr | w, | ||
magmaDouble_ptr | d, | ||
magmaDouble_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 | double scalar |
[in] | sigma | double scalar |
[in] | v | magmaDouble_ptr vector |
[in] | Au | magmaDouble_ptr vector |
[in,out] | u_mp1 | magmaDouble_ptr vector |
[in,out] | w | magmaDouble_ptr vector |
[in,out] | d | magmaDouble_ptr vector |
[in,out] | Ad | magmaDouble_ptr vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dparic_csr | ( | magma_d_matrix | A, |
magma_d_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_d_matrix input matrix A - initial guess (lower triangular) |
[in,out] | A_CSR | magma_d_matrix input/output matrix containing the IC approximation |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dparilu_csr | ( | magma_d_matrix | A, |
magma_d_matrix | L, | ||
magma_d_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_d_matrix input matrix A determing initial guess & processing order |
[in,out] | L | magma_d_matrix input/output matrix L containing the lower triangular factor |
[in,out] | U | magma_d_matrix input/output matrix U containing the upper triangular factor |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dparilut_sweep_gpu | ( | magma_d_matrix * | A, |
magma_d_matrix * | L, | ||
magma_d_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_d_matrix* System matrix. The format is sorted CSR. |
[in,out] | L | magma_d_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_d_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_dparilut_residuals_gpu | ( | magma_d_matrix | A, |
magma_d_matrix | L, | ||
magma_d_matrix | U, | ||
magma_d_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_d_matrix System matrix. The format is sorted CSR. |
[in] | L | magma_d_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_d_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_d_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_dvalinit_gpu | ( | magma_int_t | num_el, |
magmaDouble_ptr | dval, | ||
magma_queue_t | queue | ||
) |
Initializes a device array with zero.
[in] | num_el | magma_int_t size of array |
[in,out] | dval | magmaDouble_ptr array to initialize |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_dindexinit_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. |