![]() |
MAGMA
1.6.1
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
magma_int_t | magma_zjacobisetup_matrix (magma_z_sparse_matrix A, magma_z_sparse_matrix *M, magma_z_vector *d, magma_queue_t queue) |
Prepares the Matrix M for 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_zjacobisetup_diagscal (magma_z_sparse_matrix A, magma_z_vector *d, magma_queue_t queue) |
It returns a vector d containing the inverse diagonal elements. More... | |
magma_int_t | magma_zjacobisetup_vector (magma_z_vector b, magma_z_vector d, magma_z_vector *c, 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_zjacobisetup (magma_z_sparse_matrix A, magma_z_vector b, magma_z_sparse_matrix *M, magma_z_vector *c, 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_zjacobiiter (magma_z_sparse_matrix M, magma_z_vector c, magma_z_vector *x, magma_z_solver_par *solver_par, magma_queue_t queue) |
Iterates the solution approximation 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_zjacobiiter_precond (magma_z_sparse_matrix M, magma_z_vector *x, magma_z_solver_par *solver_par, magma_z_preconditioner *precond, magma_queue_t queue) |
Iterates the solution approximation 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_z_spmv (magmaDoubleComplex alpha, magma_z_sparse_matrix A, magma_z_vector x, magmaDoubleComplex beta, magma_z_vector y, magma_queue_t queue) |
For a given input matrix A and vectors x, y and scalars alpha, beta the wrapper determines the suitable SpMV computing y = alpha * A * x + beta * y. More... | |
magma_int_t | magma_sparse_matrix_zlag2c (magma_z_sparse_matrix A, magma_c_sparse_matrix *B, magma_queue_t queue) |
convertes magma_z_sparse_matrix from Z to C More... | |
void | magma_zcompactActive (magma_int_t m, magma_int_t n, magmaDoubleComplex_ptr dA, magma_int_t ldda, magmaInt_ptr active, magma_queue_t queue) |
ZCOMPACTACTIVE takes a set of n vectors of size m (in dA) and an array of 1s and 0sindicating which vectors to compact (for 1s) and which to disregard (for 0s). More... | |
magma_int_t | magma_zgeelltmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex_ptr dval, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue) |
This routine computes y = alpha * A^t * x + beta * y on the GPU. More... | |
magma_int_t | magma_zjacobi_diagscal (int num_rows, magma_z_vector d, magma_z_vector b, magma_z_vector *c, 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_zgemvmdot (int n, int k, magmaDoubleComplex_ptr v, magmaDoubleComplex_ptr r, magmaDoubleComplex_ptr d1, magmaDoubleComplex_ptr d2, magmaDoubleComplex_ptr skp, magma_queue_t queue) |
This is an extension of the merged dot product above by chunking the set of vectors v_i such that the data always fits into cache. More... | |
magma_int_t magma_sparse_matrix_zlag2c | ( | magma_z_sparse_matrix | A, |
magma_c_sparse_matrix * | B, | ||
magma_queue_t | queue | ||
) |
convertes magma_z_sparse_matrix from Z to C
A | magma_z_sparse_matrix input matrix descriptor | |
B | magma_c_sparse_matrix* output matrix descriptor | |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_spmv | ( | magmaDoubleComplex | alpha, |
magma_z_sparse_matrix | A, | ||
magma_z_vector | x, | ||
magmaDoubleComplex | beta, | ||
magma_z_vector | y, | ||
magma_queue_t | queue | ||
) |
For a given input matrix A and vectors x, y and scalars alpha, beta the wrapper determines the suitable SpMV computing y = alpha * A * x + beta * y.
[in] | alpha | magmaDoubleComplex scalar alpha |
[in] | A | magma_z_sparse_matrix sparse matrix A |
[in] | x | magma_z_vector input vector x |
[in] | beta | magmaDoubleComplex scalar beta |
[out] | y | magma_z_vector output vector y |
[in] | queue | magma_queue_t Queue to execute in. |
void magma_zcompactActive | ( | magma_int_t | m, |
magma_int_t | n, | ||
magmaDoubleComplex_ptr | dA, | ||
magma_int_t | ldda, | ||
magmaInt_ptr | active, | ||
magma_queue_t | queue | ||
) |
ZCOMPACTACTIVE takes a set of n vectors of size m (in dA) and an array of 1s and 0sindicating which vectors to compact (for 1s) and which to disregard (for 0s).
[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] | 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] | active | INTEGER array, dimension N A mask of 1s and 0s showing if a vector remains or has been removed |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zgeelltmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | nnz_per_row, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex_ptr | dval, | ||
magmaIndex_ptr | dcolind, | ||
magmaDoubleComplex_ptr | dx, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex_ptr | dy, | ||
magma_queue_t | queue | ||
) |
This routine computes y = alpha * A^t * x + beta * y on the GPU.
Input format is ELL.
[in] | transA | magma_trans_t transposition parameter for A |
[in] | m | magma_int_t number of rows in A |
[in] | n | magma_int_t number of columns in A |
[in] | nnz_per_row | magma_int_t number of elements in the longest row |
[in] | alpha | magmaDoubleComplex scalar multiplier |
[in] | dval | magmaDoubleComplex_ptr array containing values of A in ELL |
[in] | dcolind | magmaIndex_ptr columnindices of A in ELL |
[in] | dx | magmaDoubleComplex_ptr input vector x |
[in] | beta | magmaDoubleComplex scalar multiplier |
[out] | dy | magmaDoubleComplex_ptr input/output vector y |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zgemvmdot | ( | int | n, |
int | k, | ||
magmaDoubleComplex_ptr | v, | ||
magmaDoubleComplex_ptr | r, | ||
magmaDoubleComplex_ptr | d1, | ||
magmaDoubleComplex_ptr | d2, | ||
magmaDoubleComplex_ptr | skp, | ||
magma_queue_t | queue | ||
) |
This is an extension of the merged dot product above by chunking the set of vectors v_i such that the data always fits into cache.
It is equivalent to a matrix vecor product Vr where V contains few rows and many columns. The computation is the same:
skp = ( <v_0,r>, <v_1,r>, .. )
Returns the vector skp.
[in] | n | int length of v_i and r |
[in] | k | int vectors v_i |
[in] | v | magmaDoubleComplex_ptr v = (v_0 .. v_i.. v_k) |
[in] | r | magmaDoubleComplex_ptr r |
[in] | d1 | magmaDoubleComplex_ptr workspace |
[in] | d2 | magmaDoubleComplex_ptr workspace |
[out] | skp | magmaDoubleComplex_ptr vector[k] of scalar products (<v_i,r>...) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zjacobi_diagscal | ( | int | num_rows, |
magma_z_vector | d, | ||
magma_z_vector | b, | ||
magma_z_vector * | c, | ||
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_z_vector RHS b |
[in] | d | magma_z_vector vector with diagonal entries |
[out] | c | magma_z_vector* c = D^(-1) * b |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zjacobiiter | ( | magma_z_sparse_matrix | M, |
magma_z_vector | c, | ||
magma_z_vector * | x, | ||
magma_z_solver_par * | solver_par, | ||
magma_queue_t | queue | ||
) |
Iterates the solution approximation according to x^(k+1) = D^(-1) * b - D^(-1) * (L+U) * x^k x^(k+1) = c - M * x^k.
[in] | M | magma_z_sparse_matrix input matrix M = D^(-1) * (L+U) |
[in] | c | magma_z_vector c = D^(-1) * b |
[in,out] | x | magma_z_vector* iteration vector x |
[in,out] | solver_par | magma_z_solver_par* solver parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zjacobiiter_precond | ( | magma_z_sparse_matrix | M, |
magma_z_vector * | x, | ||
magma_z_solver_par * | solver_par, | ||
magma_z_preconditioner * | precond, | ||
magma_queue_t | queue | ||
) |
Iterates the solution approximation according to x^(k+1) = D^(-1) * b - D^(-1) * (L+U) * x^k x^(k+1) = c - M * x^k.
[in] | M | magma_z_sparse_matrix input matrix M = D^(-1) * (L+U) |
[in] | c | magma_z_vector c = D^(-1) * b |
[in,out] | x | magma_z_vector* iteration vector x |
[in,out] | solver_par | magma_z_solver_par* solver parameters |
[in] | solver_par | magma_z_precond_par* precond parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zjacobisetup | ( | magma_z_sparse_matrix | A, |
magma_z_vector | b, | ||
magma_z_sparse_matrix * | M, | ||
magma_z_vector * | c, | ||
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.
[in] | A | magma_z_sparse_matrix input matrix A |
[in] | b | magma_z_vector RHS b |
[in] | M | magma_z_sparse_matrix* M = D^(-1) * (L+U) |
[in] | c | magma_z_vector* c = D^(-1) * b |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zjacobisetup_diagscal | ( | magma_z_sparse_matrix | A, |
magma_z_vector * | d, | ||
magma_queue_t | queue | ||
) |
It returns a vector d containing the inverse diagonal elements.
[in] | A | magma_z_sparse_matrix input matrix A |
[in,out] | d | magma_z_vector* vector with diagonal elements |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zjacobisetup_matrix | ( | magma_z_sparse_matrix | A, |
magma_z_sparse_matrix * | M, | ||
magma_z_vector * | d, | ||
magma_queue_t | queue | ||
) |
Prepares the Matrix M for the Jacobi Iteration according to x^(k+1) = D^(-1) * b - D^(-1) * (L+U) * x^k x^(k+1) = c - M * x^k.
It returns the preconditioner Matrix M and a vector d containing the diagonal elements.
[in] | A | magma_z_sparse_matrix input matrix A |
[in] | M | magma_z_sparse_matrix* M = D^(-1) * (L+U) |
[in,out] | d | magma_z_vector* vector with diagonal elements of A |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zjacobisetup_vector | ( | magma_z_vector | b, |
magma_z_vector | d, | ||
magma_z_vector * | c, | ||
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
[in] | b | magma_z_vector RHS b |
[in] | d | magma_z_vector vector with diagonal entries |
[in] | c | magma_z_vector* c = D^(-1) * b |
[in] | queue | magma_queue_t Queue to execute in. |