![]() |
MAGMA
2.0.2
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
magma_int_t | magma_z_precond (magma_z_matrix A, magma_z_matrix b, magma_z_matrix *x, magma_z_preconditioner *precond, magma_queue_t queue) |
For a given input matrix A and vectors x, y and the preconditioner parameters, the respective preconditioner is chosen. More... | |
magma_int_t | magma_z_precondsetup (magma_z_matrix A, magma_z_matrix b, magma_z_solver_par *solver, magma_z_preconditioner *precond, magma_queue_t queue) |
For a given input matrix M and vectors x, y and the preconditioner parameters, the respective preconditioner is preprocessed. More... | |
magma_int_t | magma_z_applyprecond (magma_z_matrix A, magma_z_matrix b, magma_z_matrix *x, magma_z_preconditioner *precond, magma_queue_t queue) |
For a given input matrix A and vectors x, y and the preconditioner parameters, the respective preconditioner is applied. More... | |
magma_int_t | magma_z_applyprecond_left (magma_trans_t trans, magma_z_matrix A, magma_z_matrix b, magma_z_matrix *x, magma_z_preconditioner *precond, magma_queue_t queue) |
For a given input matrix A and vectors x, y and the preconditioner parameters, the respective left preconditioner is applied. More... | |
magma_int_t | magma_z_applyprecond_right (magma_trans_t trans, magma_z_matrix A, magma_z_matrix b, magma_z_matrix *x, magma_z_preconditioner *precond, magma_queue_t queue) |
For a given input matrix A and vectors x, y and the preconditioner parameters, the respective right-preconditioner is applied. More... | |
magma_int_t | magma_z_solver (magma_z_matrix A, magma_z_matrix b, magma_z_matrix *x, magma_zopts *zopts, magma_queue_t queue) |
Allows the user to choose a solver. More... | |
magma_int_t | magma_zapplycustomprecond_l (magma_z_matrix b, magma_z_matrix *x, magma_z_preconditioner *precond, magma_queue_t queue) |
This is an interface to the left solve for any custom preconditioner. More... | |
magma_int_t | magma_zapplycustomprecond_r (magma_z_matrix b, magma_z_matrix *x, magma_z_preconditioner *precond, magma_queue_t queue) |
This is an interface to the right solve for any custom preconditioner. More... | |
magma_int_t | magma_zmlumerge (magma_z_matrix L, magma_z_matrix U, magma_z_matrix *A) |
Takes an strictly lower triangular matrix L and an upper triangular matrix U and merges them into a matrix A containing the upper and lower triangular parts. More... | |
magma_int_t | magma_zresidual (magma_z_matrix A, magma_z_matrix b, magma_z_matrix x, double *res, magma_queue_t queue) |
Computes the residual ||b-Ax|| for a solution approximation x. More... | |
magma_int_t | magma_zresidual_slice (magma_int_t start, magma_int_t end, magma_z_matrix A, magma_z_matrix b, magma_z_matrix x, double *res, magma_queue_t queue) |
Computes the residual r=||b-Ax|| for the slice r(start:end) for a solution approximation x. More... | |
magma_int_t | magma_zresidualvec (magma_z_matrix A, magma_z_matrix b, magma_z_matrix x, magma_z_matrix *r, double *res, magma_queue_t queue) |
Computes the residual r = b-Ax for a solution approximation x. More... | |
magma_int_t | magma_zcsrsplit (magma_int_t offset, magma_int_t bsize, magma_z_matrix A, magma_z_matrix *D, magma_z_matrix *R, magma_queue_t queue) |
Splits a CSR matrix into two matrices, one containing the diagonal blocks with the diagonal element stored first, one containing the rest of the original matrix. More... | |
magma_int_t | magma_zdomainoverlap (magma_index_t num_rows, magma_int_t *num_indices, magma_index_t *rowptr, magma_index_t *colidx, magma_index_t *x, magma_queue_t queue) |
Generates the update list. More... | |
magma_int_t | magma_zmfree (magma_z_matrix *A, magma_queue_t queue) |
Free the memory of a magma_z_matrix. More... | |
magma_int_t | magma_zfrobenius (magma_z_matrix A, magma_z_matrix B, real_Double_t *res, magma_queue_t queue) |
Computes the Frobenius norm of the difference between the CSR matrices A and B. More... | |
magma_int_t | magma_znonlinres (magma_z_matrix A, magma_z_matrix L, magma_z_matrix U, magma_z_matrix *LU, real_Double_t *res, magma_queue_t queue) |
Computes the nonlinear residual A - LU and returns the difference as well es the Frobenius norm of the difference. More... | |
magma_int_t | magma_zilures (magma_z_matrix A, magma_z_matrix L, magma_z_matrix U, magma_z_matrix *LU, real_Double_t *res, real_Double_t *nonlinres, magma_queue_t queue) |
Computes the ILU residual A - LU and returns the difference as well es the Frobenius norm of the difference. More... | |
magma_int_t | magma_zicres (magma_z_matrix A, magma_z_matrix C, magma_z_matrix CT, magma_z_matrix *LU, real_Double_t *res, real_Double_t *nonlinres, magma_queue_t queue) |
Computes the IC residual A - CC^T and returns the difference as well es the Frobenius norm of the difference. More... | |
magma_int_t | magma_zinitguess (magma_z_matrix A, magma_z_matrix *L, magma_z_matrix *U, magma_queue_t queue) |
Computes an initial guess for the iterative ILU/IC. More... | |
magma_int_t | magma_zinitrecursiveLU (magma_z_matrix A, magma_z_matrix *B, magma_queue_t queue) |
Using the iterative approach of computing ILU factorizations with increasing fill-in, it takes the input matrix A, containing the approximate factors, ( L and U as well ) computes a matrix with one higher level of fill-in, inserts the original approximation as initial guess, and provides the factors L and U also filled with the scaled initial guess. More... | |
magma_int_t | magma_zmLdiagadd (magma_z_matrix *L, magma_queue_t queue) |
Checks for a lower triangular matrix whether it is strictly lower triangular and in the negative case adds a unit diagonal. More... | |
magma_int_t | magma_zrowentries (magma_z_matrix *A, magma_queue_t queue) |
Checks the maximal number of nonzeros in a row of matrix A. More... | |
magma_int_t | magma_zdiameter (magma_z_matrix *A, magma_queue_t queue) |
Computes the diameter of a sparse matrix and stores the value in diameter. More... | |
magma_int_t | magma_z_csr_compressor (magmaDoubleComplex **val, magma_index_t **row, magma_index_t **col, magmaDoubleComplex **valn, magma_index_t **rown, magma_index_t **coln, magma_int_t *n, magma_queue_t queue) |
Helper function to compress CSR containing zero-entries. More... | |
magma_int_t | magma_zmconvert (magma_z_matrix A, magma_z_matrix *B, magma_storage_t old_format, magma_storage_t new_format, magma_queue_t queue) |
Converter between different sparse storage formats. More... | |
magma_int_t | magma_zmcsrcompressor (magma_z_matrix *A, magma_queue_t queue) |
Removes zeros in a CSR matrix. More... | |
magma_int_t | magma_zcsrset (magma_int_t m, magma_int_t n, magma_index_t *row, magma_index_t *col, magmaDoubleComplex *val, magma_z_matrix *A, magma_queue_t queue) |
Passes a CSR matrix to MAGMA. More... | |
magma_int_t | magma_zcsrget (magma_z_matrix A, magma_int_t *m, magma_int_t *n, magma_index_t **row, magma_index_t **col, magmaDoubleComplex **val, magma_queue_t queue) |
Passes a MAGMA matrix to CSR structure. More... | |
magma_int_t | magma_zcsrset_gpu (magma_int_t m, magma_int_t n, magmaIndex_ptr row, magmaIndex_ptr col, magmaDoubleComplex_ptr val, magma_z_matrix *A, magma_queue_t queue) |
Passes a CSR matrix to MAGMA (located on DEV). More... | |
magma_int_t | magma_zcsrget_gpu (magma_z_matrix A, magma_int_t *m, magma_int_t *n, magmaIndex_ptr *row, magmaIndex_ptr *col, magmaDoubleComplex_ptr *val, magma_queue_t queue) |
Passes a MAGMA matrix to CSR structure (located on DEV). More... | |
magma_int_t | magma_zmdiff (magma_z_matrix A, magma_z_matrix B, real_Double_t *res, magma_queue_t queue) |
Computes the Frobenius norm of the difference between the CSR matrices A and B. More... | |
magma_int_t | magma_zmgenerator (magma_int_t n, magma_int_t offdiags, magma_index_t *diag_offset, magmaDoubleComplex *diag_vals, magma_z_matrix *A, magma_queue_t queue) |
Generate a symmetric n x n CSR matrix for a stencil. More... | |
magma_int_t | magma_zm_27stencil (magma_int_t n, magma_z_matrix *A, magma_queue_t queue) |
Generate a 27-point stencil for a 3D FD discretization. More... | |
magma_int_t | magma_zm_5stencil (magma_int_t n, magma_z_matrix *A, magma_queue_t queue) |
Generate a 5-point stencil for a 2D FD discretization. More... | |
magma_int_t | magma_zsymbilu (magma_z_matrix *A, magma_int_t levels, magma_z_matrix *L, magma_z_matrix *U, magma_queue_t queue) |
This routine performs a symbolic ILU factorization. More... | |
magma_int_t | read_z_csr_from_mtx (magma_storage_t *type, magma_location_t *location, magma_int_t *n_row, magma_int_t *n_col, magma_int_t *nnz, magmaDoubleComplex **val, magma_index_t **row, magma_index_t **col, const char *filename, magma_queue_t queue) |
Reads in a matrix stored in coo format from a Matrix Market (.mtx) file and converts it into CSR format. More... | |
magma_int_t | magma_zwrite_csr_mtx (magma_z_matrix A, magma_order_t MajorType, const char *filename, magma_queue_t queue) |
Writes a CSR matrix to a file using Matrix Market format. More... | |
magma_int_t | magma_zprint_csr_mtx (magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, magmaDoubleComplex **val, magma_index_t **row, magma_index_t **col, magma_order_t MajorType, magma_queue_t queue) |
Prints a CSR matrix in Matrix Market format. More... | |
magma_int_t | magma_zprint_csr (magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, magmaDoubleComplex **val, magma_index_t **row, magma_index_t **col, magma_queue_t queue) |
Prints a CSR matrix in CSR format. More... | |
magma_int_t | magma_zprint_matrix (magma_z_matrix A, magma_queue_t queue) |
Prints a sparse matrix in CSR format. More... | |
magma_int_t | magma_z_csr_mtx (magma_z_matrix *A, const char *filename, magma_queue_t queue) |
Reads in a matrix stored in coo format from a Matrix Market (.mtx) file and converts it into CSR format. More... | |
magma_int_t | magma_z_csr_mtxsymm (magma_z_matrix *A, const char *filename, magma_queue_t queue) |
Reads in a SYMMETRIC matrix stored in coo format from a Matrix Market (.mtx) file and converts it into CSR format. More... | |
magma_int_t | magma_zmlumerge (magma_z_matrix L, magma_z_matrix U, magma_z_matrix *A, magma_queue_t queue) |
Takes an strictly lower triangular matrix L and an upper triangular matrix U and merges them into a matrix A containing the upper and lower triangular parts. More... | |
magma_int_t | magma_zmscale (magma_z_matrix *A, magma_scale_t scaling, magma_queue_t queue) |
Scales a matrix. More... | |
magma_int_t | magma_zmdiagadd (magma_z_matrix *A, magmaDoubleComplex add, magma_queue_t queue) |
Adds a multiple of the Identity matrix to a matrix: A = A+add * I. More... | |
magma_int_t | magma_zmshrink (magma_z_matrix A, magma_z_matrix *B, magma_queue_t queue) |
Shrinks a non-square matrix (m < n) to the smaller dimension. More... | |
magma_int_t | magma_zmslice (magma_int_t num_slices, magma_int_t slice, magma_z_matrix A, magma_z_matrix *B, magma_z_matrix *ALOC, magma_z_matrix *ANLOC, magma_index_t *comm_i, magmaDoubleComplex *comm_v, magma_int_t *start, magma_int_t *end, magma_queue_t queue) |
Takes a matrix and extracts a slice for solving the system in parallel: More... | |
magma_int_t | magma_zmtransfer (magma_z_matrix A, magma_z_matrix *B, magma_location_t src, magma_location_t dst, magma_queue_t queue) |
Copies a matrix from memory location src to memory location dst. More... | |
magma_int_t | z_transpose_csr (magma_int_t n_rows, magma_int_t n_cols, magma_int_t nnz, magmaDoubleComplex *values, magma_index_t *rowptr, magma_index_t *colind, magma_int_t *new_n_rows, magma_int_t *new_n_cols, magma_int_t *new_nnz, magmaDoubleComplex **new_values, magma_index_t **new_rowptr, magma_index_t **new_colind, magma_queue_t queue) |
Transposes a matrix stored in CSR format on the CPU host. More... | |
magma_int_t | magma_zmtranspose (magma_z_matrix A, magma_z_matrix *B, magma_queue_t queue) |
Interface to cuSPARSE transpose. More... | |
magma_int_t | magma_z_cucsrtranspose (magma_z_matrix A, magma_z_matrix *B, magma_queue_t queue) |
Helper function to transpose CSR matrix. More... | |
magma_int_t | magma_zmtransposeconjugate (magma_z_matrix A, magma_z_matrix *B, magma_queue_t queue) |
This function forms the transpose conjugate of a matrix. More... | |
magma_int_t | magma_zsolverinfo (magma_z_solver_par *solver_par, magma_z_preconditioner *precond_par, magma_queue_t queue) |
Prints information about a previously called solver. More... | |
magma_int_t | magma_zsolverinfo_free (magma_z_solver_par *solver_par, magma_z_preconditioner *precond_par, magma_queue_t queue) |
Frees any memory assocoiated with the verbose mode of solver_par. More... | |
magma_int_t | magma_zsolverinfo_init (magma_z_solver_par *solver_par, magma_z_preconditioner *precond_par, magma_queue_t queue) |
Initializes all solver and preconditioner parameters. More... | |
magma_int_t | magma_zeigensolverinfo_init (magma_z_solver_par *solver_par, magma_queue_t queue) |
Initializes space for eigensolvers. More... | |
magma_int_t | magma_zsort (magmaDoubleComplex *x, magma_int_t first, magma_int_t last, magma_queue_t queue) |
Sorts an array of values in increasing order. More... | |
magma_int_t | magma_zmsort (magmaDoubleComplex *x, magma_index_t *col, magma_index_t *row, magma_int_t first, magma_int_t last, magma_queue_t queue) |
Sorts an array of values in increasing order. More... | |
magma_int_t | magma_zindexsort (magma_index_t *x, magma_int_t first, magma_int_t last, magma_queue_t queue) |
Sorts an array of integers in increasing order. More... | |
magma_int_t | magma_zindexsortval (magma_index_t *x, magmaDoubleComplex *y, magma_int_t first, magma_int_t last, magma_queue_t queue) |
Sorts an array of integers, updates a respective array of values. More... | |
magma_int_t | magma_zmorderstatistics (magmaDoubleComplex *val, magma_index_t *col, magma_index_t *row, magma_int_t length, magma_int_t k, magma_int_t r, magmaDoubleComplex *element, magma_queue_t queue) |
Identifies the kth smallest/largest element in an array and reorders such that these elements come to the front. More... | |
magma_int_t | magma_zorderstatistics (magmaDoubleComplex *val, magma_int_t length, magma_int_t k, magma_int_t r, magmaDoubleComplex *element, magma_queue_t queue) |
Identifies the kth smallest/largest element in an array. More... | |
magma_int_t | magma_zparse_opts (int argc, char **argv, magma_zopts *opts, int *matrices, magma_queue_t queue) |
Parses input options for a solver. More... | |
magma_int_t | magma_zvinit (magma_z_matrix *x, magma_location_t mem_loc, magma_int_t num_rows, magma_int_t num_cols, magmaDoubleComplex values, magma_queue_t queue) |
Allocates memory for magma_z_matrix and initializes it with the passed value. More... | |
magma_int_t | magma_zprint_vector (magma_z_matrix x, magma_int_t offset, magma_int_t visulen, magma_queue_t queue) |
Visualizes part of a vector of type magma_z_matrix. More... | |
magma_int_t | magma_zvread (magma_z_matrix *x, magma_int_t length, char *filename, magma_queue_t queue) |
Reads in a double vector of length "length". More... | |
magma_int_t | magma_zvspread (magma_z_matrix *x, const char *filename, magma_queue_t queue) |
Reads in a sparse vector-block stored in COO format. More... | |
magma_int_t | magma_zvset (magma_int_t m, magma_int_t n, magmaDoubleComplex *val, magma_z_matrix *v, magma_queue_t queue) |
Passes a vector to MAGMA. More... | |
magma_int_t | magma_zvget (magma_z_matrix v, magma_int_t *m, magma_int_t *n, magmaDoubleComplex **val, magma_queue_t queue) |
Passes a MAGMA vector back. More... | |
magma_int_t | magma_zvset_dev (magma_int_t m, magma_int_t n, magmaDoubleComplex_ptr val, magma_z_matrix *v, magma_queue_t queue) |
Passes a vector to MAGMA (located on DEV). More... | |
magma_int_t | magma_zvget_dev (magma_z_matrix v, magma_int_t *m, magma_int_t *n, magmaDoubleComplex_ptr *val, magma_queue_t queue) |
Passes a MAGMA vector back (located on DEV). More... | |
magma_int_t | magma_zvtranspose (magma_z_matrix x, magma_z_matrix *y, magma_queue_t queue) |
Transposes a vector from col to row major and vice versa. More... | |
magma_int_t | magma_vector_zlag2c (magma_z_matrix x, magma_c_vector *y, magma_queue_t queue) |
convertes magma_z_matrix from Z to C More... | |
magma_int_t magma_vector_zlag2c | ( | magma_z_matrix | x, |
magma_c_vector * | y, | ||
magma_queue_t | queue | ||
) |
convertes magma_z_matrix from Z to C
x | magma_z_matrix input vector descriptor | |
y | magma_c_vector* output vector descriptor | |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_applyprecond | ( | magma_z_matrix | A, |
magma_z_matrix | b, | ||
magma_z_matrix * | x, | ||
magma_z_preconditioner * | precond, | ||
magma_queue_t | queue | ||
) |
For a given input matrix A and vectors x, y and the preconditioner parameters, the respective preconditioner is applied.
E.g. for Jacobi: the scaling-vetor, for ILU the triangular solves.
[in] | A | magma_z_matrix sparse matrix A |
[in] | b | magma_z_matrix input vector b |
[in,out] | x | magma_z_matrix* output vector x |
[in] | precond | magma_z_preconditioner preconditioner |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_applyprecond_left | ( | magma_trans_t | trans, |
magma_z_matrix | A, | ||
magma_z_matrix | b, | ||
magma_z_matrix * | x, | ||
magma_z_preconditioner * | precond, | ||
magma_queue_t | queue | ||
) |
For a given input matrix A and vectors x, y and the preconditioner parameters, the respective left preconditioner is applied.
E.g. for Jacobi: the scaling-vetor, for ILU the left triangular solve.
[in] | A | magma_z_matrix sparse matrix A |
[in] | b | magma_z_matrix input vector b |
[in,out] | x | magma_z_matrix* output vector x |
[in] | precond | magma_z_preconditioner preconditioner |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_applyprecond_right | ( | magma_trans_t | trans, |
magma_z_matrix | A, | ||
magma_z_matrix | b, | ||
magma_z_matrix * | x, | ||
magma_z_preconditioner * | precond, | ||
magma_queue_t | queue | ||
) |
For a given input matrix A and vectors x, y and the preconditioner parameters, the respective right-preconditioner is applied.
E.g. for Jacobi: the scaling-vetor, for ILU the right triangular solve.
[in] | A | magma_z_matrix sparse matrix A |
[in] | b | magma_z_matrix input vector b |
[in,out] | x | magma_z_matrix* output vector x |
[in] | precond | magma_z_preconditioner preconditioner |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_csr_compressor | ( | magmaDoubleComplex ** | val, |
magma_index_t ** | row, | ||
magma_index_t ** | col, | ||
magmaDoubleComplex ** | valn, | ||
magma_index_t ** | rown, | ||
magma_index_t ** | coln, | ||
magma_int_t * | n, | ||
magma_queue_t | queue | ||
) |
Helper function to compress CSR containing zero-entries.
[in] | val | magmaDoubleComplex** input val pointer to compress |
[in] | row | magma_int_t** input row pointer to modify |
[in] | col | magma_int_t** input col pointer to compress |
[in] | valn | magmaDoubleComplex** output val pointer |
[out] | rown | magma_int_t** output row pointer |
[out] | coln | magma_int_t** output col pointer |
[out] | n | magma_int_t* number of rows in matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_csr_mtx | ( | magma_z_matrix * | A, |
const char * | filename, | ||
magma_queue_t | queue | ||
) |
Reads in a matrix stored in coo format from a Matrix Market (.mtx) file and converts it into CSR format.
It duplicates the off-diagonal entries in the symmetric case.
[out] | A | magma_z_matrix* matrix in magma sparse matrix format |
[in] | filename | const char* filname of the mtx matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_csr_mtxsymm | ( | magma_z_matrix * | A, |
const char * | filename, | ||
magma_queue_t | queue | ||
) |
Reads in a SYMMETRIC matrix stored in coo format from a Matrix Market (.mtx) file and converts it into CSR format.
It does not duplicate the off-diagonal entries!
[out] | A | magma_z_matrix* matrix in magma sparse matrix format |
[in] | filename | const char* filname of the mtx matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_cucsrtranspose | ( | magma_z_matrix | A, |
magma_z_matrix * | B, | ||
magma_queue_t | queue | ||
) |
Helper function to transpose CSR matrix.
Using the CUSPARSE CSR2CSC function.
[in] | A | magma_z_matrix input matrix (CSR) |
[out] | B | magma_z_matrix* output matrix (CSR) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_precond | ( | magma_z_matrix | A, |
magma_z_matrix | b, | ||
magma_z_matrix * | x, | ||
magma_z_preconditioner * | precond, | ||
magma_queue_t | queue | ||
) |
For a given input matrix A and vectors x, y and the preconditioner parameters, the respective preconditioner is chosen.
It approximates x for A x = y.
[in] | A | magma_z_matrix sparse matrix A |
[in] | b | magma_z_matrix input vector b |
[in] | x | magma_z_matrix* output vector x |
[in,out] | precond | magma_z_preconditioner preconditioner |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_precondsetup | ( | magma_z_matrix | A, |
magma_z_matrix | b, | ||
magma_z_solver_par * | solver, | ||
magma_z_preconditioner * | precond, | ||
magma_queue_t | queue | ||
) |
For a given input matrix M and vectors x, y and the preconditioner parameters, the respective preconditioner is preprocessed.
E.g. for Jacobi: the scaling-vetor, for ILU the factorization.
[in] | A | magma_z_matrix sparse matrix M |
[in] | b | magma_z_matrix input vector y |
[in,out] | precond | magma_z_preconditioner preconditioner |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_z_solver | ( | magma_z_matrix | A, |
magma_z_matrix | b, | ||
magma_z_matrix * | x, | ||
magma_zopts * | zopts, | ||
magma_queue_t | queue | ||
) |
Allows the user to choose a solver.
[in] | A | magma_z_matrix sparse matrix A |
[in] | b | magma_z_matrix input vector b |
[in] | x | magma_z_matrix* output vector x |
[in] | zopts | magma_zopts options for solver and preconditioner |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zapplycustomprecond_l | ( | magma_z_matrix | b, |
magma_z_matrix * | x, | ||
magma_z_preconditioner * | precond, | ||
magma_queue_t | queue | ||
) |
This is an interface to the left solve for any custom preconditioner.
It should compute x = FUNCTION(b) The vectors are located on the device.
[in] | b | magma_z_matrix RHS |
[in,out] | x | magma_z_matrix* vector to precondition |
[in,out] | precond | magma_z_preconditioner* preconditioner parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zapplycustomprecond_r | ( | magma_z_matrix | b, |
magma_z_matrix * | x, | ||
magma_z_preconditioner * | precond, | ||
magma_queue_t | queue | ||
) |
This is an interface to the right solve for any custom preconditioner.
It should compute x = FUNCTION(b) The vectors are located on the device.
[in] | b | magma_z_matrix RHS |
[in,out] | x | magma_z_matrix* vector to precondition |
[in,out] | precond | magma_z_preconditioner* preconditioner parameters |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zcsrget | ( | magma_z_matrix | A, |
magma_int_t * | m, | ||
magma_int_t * | n, | ||
magma_index_t ** | row, | ||
magma_index_t ** | col, | ||
magmaDoubleComplex ** | val, | ||
magma_queue_t | queue | ||
) |
Passes a MAGMA matrix to CSR structure.
[in] | A | magma_z_matrix magma sparse matrix in CSR format |
[out] | m | magma_int_t number of rows |
[out] | n | magma_int_t number of columns |
[out] | row | magma_index_t* row pointer |
[out] | col | magma_index_t* column indices |
[out] | val | magmaDoubleComplex* array containing matrix entries |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zcsrget_gpu | ( | magma_z_matrix | A, |
magma_int_t * | m, | ||
magma_int_t * | n, | ||
magmaIndex_ptr * | row, | ||
magmaIndex_ptr * | col, | ||
magmaDoubleComplex_ptr * | val, | ||
magma_queue_t | queue | ||
) |
Passes a MAGMA matrix to CSR structure (located on DEV).
[in] | A | magma_z_matrix magma sparse matrix in CSR format |
[out] | m | magma_int_t number of rows |
[out] | n | magma_int_t number of columns |
[out] | row | magmaIndex_ptr row pointer |
[out] | col | magmaIndex_ptr column indices |
[out] | val | magmaDoubleComplex_ptr array containing matrix entries |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zcsrset | ( | magma_int_t | m, |
magma_int_t | n, | ||
magma_index_t * | row, | ||
magma_index_t * | col, | ||
magmaDoubleComplex * | val, | ||
magma_z_matrix * | A, | ||
magma_queue_t | queue | ||
) |
Passes a CSR matrix to MAGMA.
[in] | m | magma_int_t number of rows |
[in] | n | magma_int_t number of columns |
[in] | row | magma_index_t* row pointer |
[in] | col | magma_index_t* column indices |
[in] | val | magmaDoubleComplex* array containing matrix entries |
[out] | A | magma_z_matrix* matrix in magma sparse matrix format |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zcsrset_gpu | ( | magma_int_t | m, |
magma_int_t | n, | ||
magmaIndex_ptr | row, | ||
magmaIndex_ptr | col, | ||
magmaDoubleComplex_ptr | val, | ||
magma_z_matrix * | A, | ||
magma_queue_t | queue | ||
) |
Passes a CSR matrix to MAGMA (located on DEV).
[in] | m | magma_int_t number of rows |
[in] | n | magma_int_t number of columns |
[in] | row | magmaIndex_ptr row pointer |
[in] | col | magmaIndex_ptr column indices |
[in] | val | magmaDoubleComplex_ptr array containing matrix entries |
[out] | A | magma_z_matrix* matrix in magma sparse matrix format |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zcsrsplit | ( | magma_int_t | offset, |
magma_int_t | bsize, | ||
magma_z_matrix | A, | ||
magma_z_matrix * | D, | ||
magma_z_matrix * | R, | ||
magma_queue_t | queue | ||
) |
Splits a CSR matrix into two matrices, one containing the diagonal blocks with the diagonal element stored first, one containing the rest of the original matrix.
[in] | offset | magma_int_t size of the first block |
[in] | bsize | magma_int_t size of the diagonal blocks |
[in] | A | magma_z_matrix CSR input matrix |
[out] | D | magma_z_matrix* CSR matrix containing diagonal blocks |
[out] | R | magma_z_matrix* CSR matrix containing rest |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zdiameter | ( | magma_z_matrix * | A, |
magma_queue_t | queue | ||
) |
Computes the diameter of a sparse matrix and stores the value in diameter.
[in,out] | A | magma_z_matrix* sparse matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zdomainoverlap | ( | magma_index_t | num_rows, |
magma_int_t * | num_indices, | ||
magma_index_t * | rowptr, | ||
magma_index_t * | colidx, | ||
magma_index_t * | x, | ||
magma_queue_t | queue | ||
) |
Generates the update list.
[in] | x | magma_index_t* array to sort |
[in] | num_rows | magma_int_t number of rows in matrix |
[out] | num_indices | magma_int_t* number of indices in array |
[in] | rowptr | magma_index_t* rowpointer of matrix |
[in] | colidx | magma_index_t* colindices of matrix |
[in] | x | magma_index_t* array containing indices for domain overlap |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zeigensolverinfo_init | ( | magma_z_solver_par * | solver_par, |
magma_queue_t | queue | ||
) |
Initializes space for eigensolvers.
[in,out] | solver_par | magma_z_solver_par* structure containing all solver information |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zfrobenius | ( | magma_z_matrix | A, |
magma_z_matrix | B, | ||
real_Double_t * | res, | ||
magma_queue_t | queue | ||
) |
Computes the Frobenius norm of the difference between the CSR matrices A and B.
They need to share the same sparsity pattern!
[in] | A | magma_z_matrix sparse matrix in CSR |
[in] | B | magma_z_matrix sparse matrix in CSR |
[out] | res | real_Double_t* Frobenius norm of difference |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zicres | ( | magma_z_matrix | A, |
magma_z_matrix | C, | ||
magma_z_matrix | CT, | ||
magma_z_matrix * | LU, | ||
real_Double_t * | res, | ||
real_Double_t * | nonlinres, | ||
magma_queue_t | queue | ||
) |
Computes the IC residual A - CC^T and returns the difference as well es the Frobenius norm of the difference.
[in] | A | magma_z_matrix input sparse matrix in CSR |
[in] | C | magma_z_matrix input sparse matrix in CSR |
[in] | CT | magma_z_matrix input sparse matrix in CSR |
[in] | LU | magma_z_matrix* output sparse matrix in A-LU in CSR |
[out] | res | real_Double_t* IC residual |
[out] | nonlinres | real_Double_t* nonlinear residual |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zilures | ( | magma_z_matrix | A, |
magma_z_matrix | L, | ||
magma_z_matrix | U, | ||
magma_z_matrix * | LU, | ||
real_Double_t * | res, | ||
real_Double_t * | nonlinres, | ||
magma_queue_t | queue | ||
) |
Computes the ILU residual A - LU and returns the difference as well es the Frobenius norm of the difference.
[in] | A | magma_z_matrix input sparse matrix in CSR |
[in] | L | magma_z_matrix input sparse matrix in CSR |
[in] | U | magma_z_matrix input sparse matrix in CSR |
[out] | LU | magma_z_matrix* output sparse matrix in A-LU in CSR |
[out] | res | real_Double_t* Frobenius norm of difference |
[out] | nonlinres | real_Double_t* Frobenius norm of difference |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zindexsort | ( | magma_index_t * | x, |
magma_int_t | first, | ||
magma_int_t | last, | ||
magma_queue_t | queue | ||
) |
Sorts an array of integers in increasing order.
[in,out] | x | magma_index_t* array to sort |
[in] | first | magma_int_t pointer to first element |
[in] | last | magma_int_t pointer to last element |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zindexsortval | ( | magma_index_t * | x, |
magmaDoubleComplex * | y, | ||
magma_int_t | first, | ||
magma_int_t | last, | ||
magma_queue_t | queue | ||
) |
Sorts an array of integers, updates a respective array of values.
[in,out] | x | magma_index_t* array to sort |
[in,out] | y | magmaDoubleComplex* array to sort |
[in] | first | magma_int_t pointer to first element |
[in] | last | magma_int_t pointer to last element |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zinitguess | ( | magma_z_matrix | A, |
magma_z_matrix * | L, | ||
magma_z_matrix * | U, | ||
magma_queue_t | queue | ||
) |
Computes an initial guess for the iterative ILU/IC.
[in] | A | magma_z_matrix sparse matrix in CSR |
[out] | L | magma_z_matrix* sparse matrix in CSR |
[out] | U | magma_z_matrix* sparse matrix in CSR |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zinitrecursiveLU | ( | magma_z_matrix | A, |
magma_z_matrix * | B, | ||
magma_queue_t | queue | ||
) |
Using the iterative approach of computing ILU factorizations with increasing fill-in, it takes the input matrix A, containing the approximate factors, ( L and U as well ) computes a matrix with one higher level of fill-in, inserts the original approximation as initial guess, and provides the factors L and U also filled with the scaled initial guess.
[in] | A | magma_z_matrix* sparse matrix in CSR |
[out] | B | magma_z_matrix* sparse matrix in CSR |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zm_27stencil | ( | magma_int_t | n, |
magma_z_matrix * | A, | ||
magma_queue_t | queue | ||
) |
Generate a 27-point stencil for a 3D FD discretization.
[in] | n | magma_int_t number of rows |
[out] | A | magma_z_matrix* matrix to generate |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zm_5stencil | ( | magma_int_t | n, |
magma_z_matrix * | A, | ||
magma_queue_t | queue | ||
) |
Generate a 5-point stencil for a 2D FD discretization.
[in] | n | magma_int_t number of rows |
[out] | A | magma_z_matrix* matrix to generate |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmconvert | ( | magma_z_matrix | A, |
magma_z_matrix * | B, | ||
magma_storage_t | old_format, | ||
magma_storage_t | new_format, | ||
magma_queue_t | queue | ||
) |
Converter between different sparse storage formats.
[in] | A | magma_z_matrix sparse matrix A |
[out] | B | magma_z_matrix* copy of A in new format |
[in] | old_format | magma_storage_t original storage format |
[in] | new_format | magma_storage_t new storage format |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmcsrcompressor | ( | magma_z_matrix * | A, |
magma_queue_t | queue | ||
) |
Removes zeros in a CSR matrix.
[in,out] | A | magma_z_matrix* input/output matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmdiagadd | ( | magma_z_matrix * | A, |
magmaDoubleComplex | add, | ||
magma_queue_t | queue | ||
) |
Adds a multiple of the Identity matrix to a matrix: A = A+add * I.
[in,out] | A | magma_z_matrix* input/output matrix |
[in] | add | magmaDoubleComplex scaling for the identity matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmdiff | ( | magma_z_matrix | A, |
magma_z_matrix | B, | ||
real_Double_t * | res, | ||
magma_queue_t | queue | ||
) |
Computes the Frobenius norm of the difference between the CSR matrices A and B.
They do not need to share the same sparsity pattern!
res = ||A-B||_F = sqrt( sum_ij (A_ij-B_ij)^2 )
[in] | A | magma_z_matrix sparse matrix in CSR |
[in] | B | magma_z_matrix sparse matrix in CSR |
[out] | res | real_Double_t* residual |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmfree | ( | magma_z_matrix * | A, |
magma_queue_t | queue | ||
) |
Free the memory of a magma_z_matrix.
[in,out] | A | magma_z_matrix* matrix to free |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmgenerator | ( | magma_int_t | n, |
magma_int_t | offdiags, | ||
magma_index_t * | diag_offset, | ||
magmaDoubleComplex * | diag_vals, | ||
magma_z_matrix * | A, | ||
magma_queue_t | queue | ||
) |
Generate a symmetric n x n CSR matrix for a stencil.
[in] | n | magma_int_t number of rows |
[in] | offdiags | magma_int_t number of offdiagonals |
[in] | diag_offset | magma_int_t* array containing the offsets (length offsets+1) |
[in] | diag_vals | magmaDoubleComplex* array containing the values (length offsets+1) |
[out] | A | magma_z_matrix* matrix to generate |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmLdiagadd | ( | magma_z_matrix * | L, |
magma_queue_t | queue | ||
) |
Checks for a lower triangular matrix whether it is strictly lower triangular and in the negative case adds a unit diagonal.
It does this in-place.
[in,out] | L | magma_z_matrix* sparse matrix in CSR |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmlumerge | ( | magma_z_matrix | L, |
magma_z_matrix | U, | ||
magma_z_matrix * | A | ||
) |
Takes an strictly lower triangular matrix L and an upper triangular matrix U and merges them into a matrix A containing the upper and lower triangular parts.
L | magma_z_matrix input strictly lower triangular matrix L |
U | magma_z_matrix input upper triangular matrix U |
A | magma_z_matrix* output matrix |
magma_int_t magma_zmlumerge | ( | magma_z_matrix | L, |
magma_z_matrix | U, | ||
magma_z_matrix * | A, | ||
magma_queue_t | queue | ||
) |
Takes an strictly lower triangular matrix L and an upper triangular matrix U and merges them into a matrix A containing the upper and lower triangular parts.
[in] | L | magma_z_matrix input strictly lower triangular matrix L |
[in] | U | magma_z_matrix input upper triangular matrix U |
[out] | A | magma_z_matrix* output matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmorderstatistics | ( | magmaDoubleComplex * | val, |
magma_index_t * | col, | ||
magma_index_t * | row, | ||
magma_int_t | length, | ||
magma_int_t | k, | ||
magma_int_t | r, | ||
magmaDoubleComplex * | element, | ||
magma_queue_t | queue | ||
) |
Identifies the kth smallest/largest element in an array and reorders such that these elements come to the front.
The related arrays col and row are also reordered.
[in,out] | val | magmaDoubleComplex* Target array, will be modified during operation. |
[in,out] | col | magma_index_t* Target array, will be modified during operation. |
[in,out] | row | magma_index_t* Target array, will be modified during operation. |
[in] | length | magma_int_t Length of the target array. |
[in] | k | magma_int_t Element to be identified (largest/smallest). |
[in] | r | magma_int_t rule how to sort: '1' -> largest, '0' -> smallest |
[out] | element | magmaDoubleComplex* location of the respective element |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmscale | ( | magma_z_matrix * | A, |
magma_scale_t | scaling, | ||
magma_queue_t | queue | ||
) |
Scales a matrix.
[in,out] | A | magma_z_matrix* input/output matrix |
[in] | scaling | magma_scale_t scaling type (unit rownorm / unit diagonal) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmshrink | ( | magma_z_matrix | A, |
magma_z_matrix * | B, | ||
magma_queue_t | queue | ||
) |
Shrinks a non-square matrix (m < n) to the smaller dimension.
[in] | A | magma_z_matrix sparse matrix A |
[out] | B | magma_z_matrix* sparse matrix A |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmslice | ( | magma_int_t | num_slices, |
magma_int_t | slice, | ||
magma_z_matrix | A, | ||
magma_z_matrix * | B, | ||
magma_z_matrix * | ALOC, | ||
magma_z_matrix * | ANLOC, | ||
magma_index_t * | comm_i, | ||
magmaDoubleComplex * | comm_v, | ||
magma_int_t * | start, | ||
magma_int_t * | end, | ||
magma_queue_t | queue | ||
) |
Takes a matrix and extracts a slice for solving the system in parallel:
B = A( i:i+n, : ) and ALOC = A(i:i+n,i:i+n) and ANLOCA(0:start - end:n,:)
B is of size n x n, ALOC of size end-start x end-start, ANLOC of size end-start x n
The last slice might be smaller. For the non-local parts, B is the identity. comm contains 1ess in the locations that are non-local but needed to solve local system.
[in] | num_slices | magma_int_t number of slices |
[in] | slice | magma_int_t slice id (0.. num_slices-1) |
[in] | A | magma_z_matrix sparse matrix in CSR |
[out] | B | magma_z_matrix* sparse matrix in CSR |
[out] | ALOC | magma_z_matrix* sparse matrix in CSR |
[out] | ANLOC | magma_z_matrix* sparse matrix in CSR |
[in,out] | comm_i | magma_int_t* communication plan |
[in,out] | comm_v | magmaDoubleComplex* communication plan |
[in] | queue | magma_queue_t Queue to execute in. |
[out] | start | magma_int_t* start of slice (row-index) |
[out] | end | magma_int_t* end of slice (row-index) |
magma_int_t magma_zmsort | ( | magmaDoubleComplex * | x, |
magma_index_t * | col, | ||
magma_index_t * | row, | ||
magma_int_t | first, | ||
magma_int_t | last, | ||
magma_queue_t | queue | ||
) |
Sorts an array of values in increasing order.
[in,out] | x | magmaDoubleComplex* array to sort |
[in,out] | col | magma_index_t* Target array, will be modified during operation. |
[in,out] | row | magma_index_t* Target array, will be modified during operation. |
[in] | first | magma_int_t pointer to first element |
[in] | last | magma_int_t pointer to last element |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmtransfer | ( | magma_z_matrix | A, |
magma_z_matrix * | B, | ||
magma_location_t | src, | ||
magma_location_t | dst, | ||
magma_queue_t | queue | ||
) |
Copies a matrix from memory location src to memory location dst.
[in] | A | magma_z_matrix sparse matrix A |
[out] | B | magma_z_matrix* copy of A |
[in] | src | magma_location_t original location A |
[in] | dst | magma_location_t location of the copy of A |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmtranspose | ( | magma_z_matrix | A, |
magma_z_matrix * | B, | ||
magma_queue_t | queue | ||
) |
Interface to cuSPARSE transpose.
[in] | A | magma_z_matrix input matrix (CSR) |
[out] | B | magma_z_matrix* output matrix (CSR) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zmtransposeconjugate | ( | magma_z_matrix | A, |
magma_z_matrix * | B, | ||
magma_queue_t | queue | ||
) |
This function forms the transpose conjugate of a matrix.
For a real-value matrix, the output is the transpose.
[in] | A | magma_z_matrix input matrix (CSR) |
[out] | B | magma_z_matrix* output matrix (CSR) |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_znonlinres | ( | magma_z_matrix | A, |
magma_z_matrix | L, | ||
magma_z_matrix | U, | ||
magma_z_matrix * | LU, | ||
real_Double_t * | res, | ||
magma_queue_t | queue | ||
) |
Computes the nonlinear residual A - LU and returns the difference as well es the Frobenius norm of the difference.
[in] | A | magma_z_matrix input sparse matrix in CSR |
[in] | L | magma_z_matrix input sparse matrix in CSR |
[in] | U | magma_z_matrix input sparse matrix in CSR |
[out] | LU | magma_z_matrix* output sparse matrix in A-LU in CSR |
[out] | res | real_Double_t* Frobenius norm of difference |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zorderstatistics | ( | magmaDoubleComplex * | val, |
magma_int_t | length, | ||
magma_int_t | k, | ||
magma_int_t | r, | ||
magmaDoubleComplex * | element, | ||
magma_queue_t | queue | ||
) |
Identifies the kth smallest/largest element in an array.
[in,out] | val | magmaDoubleComplex* Target array, will be modified during operation. |
[in] | length | magma_int_t Length of the target array. |
[in] | k | magma_int_t Element to be identified (largest/smallest). |
[in] | r | magma_int_t rule how to sort: '1' -> largest, '0' -> smallest |
[out] | element | magmaDoubleComplex* location of the respective element |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zparse_opts | ( | int | argc, |
char ** | argv, | ||
magma_zopts * | opts, | ||
int * | matrices, | ||
magma_queue_t | queue | ||
) |
Parses input options for a solver.
[in] | argc | int command line input |
[in] | argv | char** command line input |
[in,out] | opts | magma_zopts * magma solver options |
[out] | matrices | int counter how many linear systems to process |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zprint_csr | ( | magma_int_t | n_row, |
magma_int_t | n_col, | ||
magma_int_t | nnz, | ||
magmaDoubleComplex ** | val, | ||
magma_index_t ** | row, | ||
magma_index_t ** | col, | ||
magma_queue_t | queue | ||
) |
Prints a CSR matrix in CSR format.
[in] | n_row | magma_int_t* number of rows in matrix |
[in] | n_col | magma_int_t* number of columns in matrix |
[in] | nnz | magma_int_t* number of nonzeros in matrix |
[in] | val | magmaDoubleComplex** value array of CSR |
[in] | row | magma_index_t** row pointer of CSR |
[in] | col | magma_index_t** column indices of CSR |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zprint_csr_mtx | ( | magma_int_t | n_row, |
magma_int_t | n_col, | ||
magma_int_t | nnz, | ||
magmaDoubleComplex ** | val, | ||
magma_index_t ** | row, | ||
magma_index_t ** | col, | ||
magma_order_t | MajorType, | ||
magma_queue_t | queue | ||
) |
Prints a CSR matrix in Matrix Market format.
[in] | n_row | magma_int_t* number of rows in matrix |
[in] | n_col | magma_int_t* number of columns in matrix |
[in] | nnz | magma_int_t* number of nonzeros in matrix |
[in] | val | magmaDoubleComplex** value array of CSR |
[in] | row | magma_index_t** row pointer of CSR |
[in] | col | magma_index_t** column indices of CSR |
[in] | MajorType | magma_index_t Row or Column sort default: 0 = RowMajor, 1 = ColMajor |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zprint_matrix | ( | magma_z_matrix | A, |
magma_queue_t | queue | ||
) |
Prints a sparse matrix in CSR format.
[in] | A | magma_z_matrix sparse matrix in Magma_CSR format |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zprint_vector | ( | magma_z_matrix | x, |
magma_int_t | offset, | ||
magma_int_t | visulen, | ||
magma_queue_t | queue | ||
) |
Visualizes part of a vector of type magma_z_matrix.
With input vector x , offset, visulen, the entries offset - (offset + visulen) of x are visualized.
[in] | x | magma_z_matrix vector to visualize |
[in] | offset | magma_int_t start inex of visualization |
[in] | visulen | magma_int_t number of entries to visualize |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zresidual | ( | magma_z_matrix | A, |
magma_z_matrix | b, | ||
magma_z_matrix | x, | ||
double * | res, | ||
magma_queue_t | queue | ||
) |
Computes the residual ||b-Ax|| for a solution approximation x.
[in] | A | magma_z_matrix input matrix A |
[in] | b | magma_z_matrix RHS b |
[in] | x | magma_z_matrix solution approximation |
[out] | res | magmaDoubleComplex* return residual |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zresidual_slice | ( | magma_int_t | start, |
magma_int_t | end, | ||
magma_z_matrix | A, | ||
magma_z_matrix | b, | ||
magma_z_matrix | x, | ||
double * | res, | ||
magma_queue_t | queue | ||
) |
Computes the residual r=||b-Ax|| for the slice r(start:end) for a solution approximation x.
[in] | start | magma_int_t start of slice (row-index) |
[in] | end | magma_int_t end of slice (row-index) |
[in] | A | magma_z_matrix input matrix A |
[in] | b | magma_z_matrix RHS b |
[in] | x | magma_z_matrix solution approximation |
[out] | res | magmaDoubleComplex* return residual |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zresidualvec | ( | magma_z_matrix | A, |
magma_z_matrix | b, | ||
magma_z_matrix | x, | ||
magma_z_matrix * | r, | ||
double * | res, | ||
magma_queue_t | queue | ||
) |
Computes the residual r = b-Ax for a solution approximation x.
It returns both, the actual residual and the residual vector
[in] | A | magma_z_matrix input matrix A |
[in] | b | magma_z_matrix RHS b |
[in] | x | magma_z_matrix solution approximation |
[in,out] | r | magma_z_matrix* residual vector |
[out] | res | magmaDoubleComplex* return residual |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zrowentries | ( | magma_z_matrix * | A, |
magma_queue_t | queue | ||
) |
Checks the maximal number of nonzeros in a row of matrix A.
Inserts the data into max_nnz_row.
[in,out] | A | magma_z_matrix* sparse matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zsolverinfo | ( | magma_z_solver_par * | solver_par, |
magma_z_preconditioner * | precond_par, | ||
magma_queue_t | queue | ||
) |
Prints information about a previously called solver.
[in] | solver_par | magma_z_solver_par* structure containing all solver information |
[in,out] | precond_par | magma_z_preconditioner* structure containing all preconditioner information |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zsolverinfo_free | ( | magma_z_solver_par * | solver_par, |
magma_z_preconditioner * | precond_par, | ||
magma_queue_t | queue | ||
) |
Frees any memory assocoiated with the verbose mode of solver_par.
The other values are set to default.
[in,out] | solver_par | magma_z_solver_par* structure containing all solver information |
[in,out] | precond_par | magma_z_preconditioner* structure containing all preconditioner information |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zsolverinfo_init | ( | magma_z_solver_par * | solver_par, |
magma_z_preconditioner * | precond_par, | ||
magma_queue_t | queue | ||
) |
Initializes all solver and preconditioner parameters.
[in,out] | solver_par | magma_z_solver_par* structure containing all solver information |
[in,out] | precond_par | magma_z_preconditioner* structure containing all preconditioner information |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zsort | ( | magmaDoubleComplex * | x, |
magma_int_t | first, | ||
magma_int_t | last, | ||
magma_queue_t | queue | ||
) |
Sorts an array of values in increasing order.
[in,out] | x | magmaDoubleComplex* array to sort |
[in] | first | magma_int_t pointer to first element |
[in] | last | magma_int_t pointer to last element |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zsymbilu | ( | magma_z_matrix * | A, |
magma_int_t | levels, | ||
magma_z_matrix * | L, | ||
magma_z_matrix * | U, | ||
magma_queue_t | queue | ||
) |
This routine performs a symbolic ILU factorization.
The algorithm is taken from an implementation written by Edmond Chow.
[in,out] | A | magma_z_matrix* matrix in magma sparse matrix format containing the original matrix on input, and L,U on output |
[in] | levels | magma_magma_int_t_t fill in level |
[out] | L | magma_z_matrix* output lower triangular matrix in magma sparse matrix format empty on function call |
[out] | U | magma_z_matrix* output upper triangular matrix in magma sparse matrix format empty on function call |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zvget | ( | magma_z_matrix | v, |
magma_int_t * | m, | ||
magma_int_t * | n, | ||
magmaDoubleComplex ** | val, | ||
magma_queue_t | queue | ||
) |
Passes a MAGMA vector back.
[in] | v | magma_z_matrix magma vector |
[out] | m | magma_int_t number of rows |
[out] | n | magma_int_t number of columns |
[out] | val | magmaDoubleComplex* array containing vector entries |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zvget_dev | ( | magma_z_matrix | v, |
magma_int_t * | m, | ||
magma_int_t * | n, | ||
magmaDoubleComplex_ptr * | val, | ||
magma_queue_t | queue | ||
) |
Passes a MAGMA vector back (located on DEV).
[in] | v | magma_z_matrix magma vector |
[out] | m | magma_int_t number of rows |
[out] | n | magma_int_t number of columns |
[out] | val | magmaDoubleComplex_ptr array containing vector entries |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zvinit | ( | magma_z_matrix * | x, |
magma_location_t | mem_loc, | ||
magma_int_t | num_rows, | ||
magma_int_t | num_cols, | ||
magmaDoubleComplex | values, | ||
magma_queue_t | queue | ||
) |
Allocates memory for magma_z_matrix and initializes it with the passed value.
[out] | x | magma_z_matrix* vector to initialize |
[in] | mem_loc | magma_location_t memory for vector |
[in] | num_rows | magma_int_t desired length of vector |
[in] | num_cols | magma_int_t desired width of vector-block (columns of dense matrix) |
[in] | values | magmaDoubleComplex entries in vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zvread | ( | magma_z_matrix * | x, |
magma_int_t | length, | ||
char * | filename, | ||
magma_queue_t | queue | ||
) |
Reads in a double vector of length "length".
[out] | x | magma_z_matrix * vector to read in |
[in] | length | magma_int_t length of vector |
[in] | filename | char* file where vector is stored |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zvset | ( | magma_int_t | m, |
magma_int_t | n, | ||
magmaDoubleComplex * | val, | ||
magma_z_matrix * | v, | ||
magma_queue_t | queue | ||
) |
Passes a vector to MAGMA.
[in] | m | magma_int_t number of rows |
[in] | n | magma_int_t number of columns |
[in] | val | magmaDoubleComplex* array containing vector entries |
[out] | v | magma_z_matrix* magma vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zvset_dev | ( | magma_int_t | m, |
magma_int_t | n, | ||
magmaDoubleComplex_ptr | val, | ||
magma_z_matrix * | v, | ||
magma_queue_t | queue | ||
) |
Passes a vector to MAGMA (located on DEV).
[in] | m | magma_int_t number of rows |
[in] | n | magma_int_t number of columns |
[in] | val | magmaDoubleComplex_ptr array containing vector entries |
[out] | v | magma_z_matrix* magma vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zvspread | ( | magma_z_matrix * | x, |
const char * | filename, | ||
magma_queue_t | queue | ||
) |
Reads in a sparse vector-block stored in COO format.
[out] | x | magma_z_matrix * vector to read in |
[in] | filename | char* file where vector is stored |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zvtranspose | ( | magma_z_matrix | x, |
magma_z_matrix * | y, | ||
magma_queue_t | queue | ||
) |
Transposes a vector from col to row major and vice versa.
[in] | x | magma_z_matrix input vector |
[out] | y | magma_z_matrix* output vector |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t magma_zwrite_csr_mtx | ( | magma_z_matrix | A, |
magma_order_t | MajorType, | ||
const char * | filename, | ||
magma_queue_t | queue | ||
) |
Writes a CSR matrix to a file using Matrix Market format.
[in] | A | magma_z_matrix matrix to write out |
[in] | MajorType | magma_index_t Row or Column sort default: 0 = RowMajor, 1 = ColMajor TODO: use named constants (e.g., MagmaRowMajor), not numbers. |
[in] | filename | const char* output-filname of the mtx matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t read_z_csr_from_mtx | ( | magma_storage_t * | type, |
magma_location_t * | location, | ||
magma_int_t * | n_row, | ||
magma_int_t * | n_col, | ||
magma_int_t * | nnz, | ||
magmaDoubleComplex ** | val, | ||
magma_index_t ** | row, | ||
magma_index_t ** | col, | ||
const char * | filename, | ||
magma_queue_t | queue | ||
) |
Reads in a matrix stored in coo format from a Matrix Market (.mtx) file and converts it into CSR format.
It duplicates the off-diagonal entries in the symmetric case.
[out] | type | magma_storage_t* storage type of matrix |
[out] | location | magma_location_t* location of matrix |
[out] | n_row | magma_int_t* number of rows in matrix |
[out] | n_col | magma_int_t* number of columns in matrix |
[out] | nnz | magma_int_t* number of nonzeros in matrix |
[out] | val | magmaDoubleComplex** value array of CSR output |
[out] | row | magma_index_t** row pointer of CSR output |
[out] | col | magma_index_t** column indices of CSR output |
[in] | filename | const char* filname of the mtx matrix |
[in] | queue | magma_queue_t Queue to execute in. |
magma_int_t z_transpose_csr | ( | magma_int_t | n_rows, |
magma_int_t | n_cols, | ||
magma_int_t | nnz, | ||
magmaDoubleComplex * | values, | ||
magma_index_t * | rowptr, | ||
magma_index_t * | colind, | ||
magma_int_t * | new_n_rows, | ||
magma_int_t * | new_n_cols, | ||
magma_int_t * | new_nnz, | ||
magmaDoubleComplex ** | new_values, | ||
magma_index_t ** | new_rowptr, | ||
magma_index_t ** | new_colind, | ||
magma_queue_t | queue | ||
) |
Transposes a matrix stored in CSR format on the CPU host.
[in] | n_rows | magma_int_t number of rows in input matrix |
[in] | n_cols | magma_int_t number of columns in input matrix |
[in] | nnz | magma_int_t number of nonzeros in input matrix |
[in] | values | magmaDoubleComplex* value array of input matrix |
[in] | rowptr | magma_index_t* row pointer of input matrix |
[in] | colind | magma_index_t* column indices of input matrix |
[in] | new_n_rows | magma_index_t* number of rows in transposed matrix |
[in] | new_n_cols | magma_index_t* number of columns in transposed matrix |
[in] | new_nnz | magma_index_t* number of nonzeros in transposed matrix |
[in] | new_values | magmaDoubleComplex** value array of transposed matrix |
[in] | new_rowptr | magma_index_t** row pointer of transposed matrix |
[in] | new_colind | magma_index_t** column indices of transposed matrix |
[in] | queue | magma_queue_t Queue to execute in. |