MAGMA  2.3.0 Matrix Algebra for GPU and Multicore Architectures
single-complex precision

## Functions

magma_int_t magma_cresidual (magma_c_matrix A, magma_c_matrix b, magma_c_matrix x, float *res, magma_queue_t queue)
Computes the residual ||b-Ax|| for a solution approximation x. More...

magma_int_t magma_cresidual_slice (magma_int_t start, magma_int_t end, magma_c_matrix A, magma_c_matrix b, magma_c_matrix x, float *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_cresidualvec (magma_c_matrix A, magma_c_matrix b, magma_c_matrix x, magma_c_matrix *r, float *res, magma_queue_t queue)
Computes the residual r = b-Ax for a solution approximation x. More...

magma_int_t magma_c_precond (magma_c_matrix A, magma_c_matrix b, magma_c_matrix *x, magma_c_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_c_precondsetup (magma_c_matrix A, magma_c_matrix b, magma_c_solver_par *solver, magma_c_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_c_applyprecond (magma_c_matrix A, magma_c_matrix b, magma_c_matrix *x, magma_c_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_c_applyprecond_left (magma_trans_t trans, magma_c_matrix A, magma_c_matrix b, magma_c_matrix *x, magma_c_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_c_applyprecond_right (magma_trans_t trans, magma_c_matrix A, magma_c_matrix b, magma_c_matrix *x, magma_c_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_c_solver (magma_c_matrix A, magma_c_matrix b, magma_c_matrix *x, magma_copts *zopts, magma_queue_t queue)
Allows the user to choose a solver. More...

magma_int_t magma_capplycustomprecond_l (magma_c_matrix b, magma_c_matrix *x, magma_c_preconditioner *precond, magma_queue_t queue)
This is an interface to the left solve for any custom preconditioner. More...

magma_int_t magma_capplycustomprecond_r (magma_c_matrix b, magma_c_matrix *x, magma_c_preconditioner *precond, magma_queue_t queue)
This is an interface to the right solve for any custom preconditioner. More...

magma_int_t magma_ccsrsplit (magma_int_t offset, magma_int_t bsize, magma_c_matrix A, magma_c_matrix *D, magma_c_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_cdomainoverlap (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_cmfree (magma_c_matrix *A, magma_queue_t queue)
Free the memory of a magma_c_matrix. More...

magma_int_t magma_cprecondfree (magma_c_preconditioner *precond_par, magma_queue_t queue)
Free a preconditioner. More...

magma_int_t magma_cmprepare_batched (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix LC, magma_index_t *sizes, magma_index_t *locations, magmaFloatComplex *trisystems, magmaFloatComplex *rhs, magma_queue_t queue)
Takes a sparse matrix and generates an array containing the sizes of the different systems an array containing the indices with the locations in the sparse matrix where the data comes from and goes back to an array containing all the sparse triangular systems. More...

magma_int_t magma_cmtrisolve_batched (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix LC, magma_index_t *sizes, magma_index_t *locations, magmaFloatComplex *trisystems, magmaFloatComplex *rhs, magma_queue_t queue)
Does all triangular solves. More...

magma_int_t magma_cmbackinsert_batched (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix *M, magma_index_t *sizes, magma_index_t *locations, magmaFloatComplex *trisystems, magmaFloatComplex *rhs, magma_queue_t queue)
Inserts the values into the preconditioner matrix. More...

magma_int_t magma_cmiluspai_sizecheck (magma_c_matrix A, magma_index_t batchsize, magma_index_t *maxsize, magma_queue_t queue)
Checks for a matrix whether the batched ISAI works for a given thread-block size. More...

magma_int_t magma_cmisai_blockstruct (magma_int_t n, magma_int_t bs, magma_int_t offs, magma_uplo_t uplotype, magma_c_matrix *A, magma_queue_t queue)
Generates a block-diagonal sparsity pattern with block-size bs. More...

magma_int_t magma_crowentries (magma_c_matrix *A, magma_queue_t queue)
Checks the maximal number of nonzeros in a row of matrix A. More...

magma_int_t magma_cdiameter (magma_c_matrix *A, magma_queue_t queue)
Computes the diameter of a sparse matrix and stores the value in diameter. More...

magma_int_t magma_c_csr_compressor (magmaFloatComplex **val, magma_index_t **row, magma_index_t **col, magmaFloatComplex **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_cmconvert (magma_c_matrix A, magma_c_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_cmcsrcompressor (magma_c_matrix *A, magma_queue_t queue)
Removes zeros in a CSR matrix. More...

magma_int_t magma_ccsrset (magma_int_t m, magma_int_t n, magma_index_t *row, magma_index_t *col, magmaFloatComplex *val, magma_c_matrix *A, magma_queue_t queue)
Passes a CSR matrix to MAGMA. More...

magma_int_t magma_ccsrget (magma_c_matrix A, magma_int_t *m, magma_int_t *n, magma_index_t **row, magma_index_t **col, magmaFloatComplex **val, magma_queue_t queue)
Passes a MAGMA matrix to CSR structure. More...

magma_int_t magma_ccsrset_gpu (magma_int_t m, magma_int_t n, magmaIndex_ptr row, magmaIndex_ptr col, magmaFloatComplex_ptr val, magma_c_matrix *A, magma_queue_t queue)
Passes a CSR matrix to MAGMA (located on DEV). More...

magma_int_t magma_ccsrget_gpu (magma_c_matrix A, magma_int_t *m, magma_int_t *n, magmaIndex_ptr *row, magmaIndex_ptr *col, magmaFloatComplex_ptr *val, magma_queue_t queue)
Passes a MAGMA matrix to CSR structure (located on DEV). More...

magma_int_t magma_cmdiagdom (magma_c_matrix M, float *min_dd, float *max_dd, float *avg_dd, magma_queue_t queue)
This routine takes a CSR matrix and computes the average diagonal dominance. More...

magma_int_t magma_cmbdiagdom (magma_c_matrix M, magma_c_matrix blocksizes, float *min_dd, float *max_dd, float *avg_dd, magma_queue_t queue)
This routine takes a CSR matrix and computes the average block-diagonal dominance. More...

magma_int_t magma_cmdiff (magma_c_matrix A, magma_c_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_cmfrobenius (magma_c_matrix A, magma_c_matrix B, magma_c_matrix S, float *norm, magma_queue_t queue)
Computes the Frobenius norm || A - B ||_S on the sparsity pattern of S. More...

magma_int_t magma_cmgenerator (magma_int_t n, magma_int_t offdiags, magma_index_t *diag_offset, magmaFloatComplex *diag_vals, magma_c_matrix *A, magma_queue_t queue)
Generate a symmetric n x n CSR matrix for a stencil. More...

magma_int_t magma_cm_27stencil (magma_int_t n, magma_c_matrix *A, magma_queue_t queue)
Generate a 27-point stencil for a 3D FD discretization. More...

magma_int_t magma_cm_5stencil (magma_int_t n, magma_c_matrix *A, magma_queue_t queue)
Generate a 5-point stencil for a 2D FD discretization. More...

magma_int_t magma_csymbilu (magma_c_matrix *A, magma_int_t levels, magma_c_matrix *L, magma_c_matrix *U, magma_queue_t queue)
This routine performs a symbolic ILU factorization. More...

magma_int_t read_c_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, magmaFloatComplex **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_cwrite_csr_mtx (magma_c_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_cprint_csr_mtx (magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, magmaFloatComplex **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_cprint_csr (magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, magmaFloatComplex **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_cprint_matrix (magma_c_matrix A, magma_queue_t queue)
Prints a sparse matrix in CSR format. More...

magma_int_t magma_c_csr_mtx (magma_c_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_c_csr_mtxsymm (magma_c_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_cmlumerge (magma_c_matrix L, magma_c_matrix U, magma_c_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_cmscale (magma_c_matrix *A, magma_scale_t scaling, magma_queue_t queue)
Scales a matrix. More...

magma_int_t magma_cmscale_matrix_rhs (magma_c_matrix *A, magma_c_matrix *b, magma_c_matrix *scaling_factors, magma_scale_t scaling, magma_queue_t queue)
Scales a matrix and a right hand side vector of a Ax = b system. More...

magma_int_t magma_cmdiagadd (magma_c_matrix *A, magmaFloatComplex add, magma_queue_t queue)
Adds a multiple of the Identity matrix to a matrix: A = A+add * I. More...

magma_int_t magma_cmscale_generate (magma_int_t n, magma_scale_t *scaling, magma_side_t *side, magma_c_matrix *A, magma_c_matrix *scaling_factors, magma_queue_t queue)
Generates n vectors of scaling factors from the A matrix and stores them in the factors matrix as column vectors in column major ordering. More...

magma_int_t magma_cmscale_apply (magma_int_t n, magma_side_t *side, magma_c_matrix *scaling_factors, magma_c_matrix *A, magma_queue_t queue)
Applies n diagonal scaling matrices to a matrix A; n=[1,2], factor[i] is applied to side[i] of the matrix. More...

magma_int_t magma_cdimv (magma_c_matrix *vecA, magma_c_matrix *vecB, magma_queue_t queue)
Multiplies a diagonal matrix (vecA) and a vector (vecB). More...

magma_int_t magma_cmshrink (magma_c_matrix A, magma_c_matrix *B, magma_queue_t queue)
Shrinks a non-square matrix (m < n) to the smaller dimension. More...

magma_int_t magma_cmslice (magma_int_t num_slices, magma_int_t slice, magma_c_matrix A, magma_c_matrix *B, magma_c_matrix *ALOC, magma_c_matrix *ANLOC, magma_index_t *comm_i, magmaFloatComplex *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_cmsupernodal (magma_int_t *max_bs, magma_c_matrix A, magma_c_matrix *S, magma_queue_t queue)
Generates a block-diagonal sparsity pattern with block-size bs. More...

magma_int_t magma_cmvarsizeblockstruct (magma_int_t n, magma_int_t *bs, magma_int_t bsl, magma_uplo_t uplotype, magma_c_matrix *A, magma_queue_t queue)
Generates a block-diagonal sparsity pattern with variable block-size. More...

magma_int_t magma_cmtransfer (magma_c_matrix A, magma_c_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 c_transpose_csr (magma_int_t n_rows, magma_int_t n_cols, magma_int_t nnz, magmaFloatComplex *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, magmaFloatComplex **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_cmtranspose (magma_c_matrix A, magma_c_matrix *B, magma_queue_t queue)
Interface to cuSPARSE transpose. More...

magma_int_t magma_c_cucsrtranspose (magma_c_matrix A, magma_c_matrix *B, magma_queue_t queue)
Helper function to transpose CSR matrix. More...

magma_int_t magma_cmtransposeconjugate (magma_c_matrix A, magma_c_matrix *B, magma_queue_t queue)
This function forms the transpose conjugate of a matrix. More...

void cpy (const magmaFloatComplex &from, magmaFloatComplex &to)
Generates a transpose of A on the CPU. More...

void conjop (const magmaFloatComplex &from, magmaFloatComplex &to)
Generates a transpose conjugate of A on the CPU. More...

void pass (const magmaFloatComplex &from, magmaFloatComplex &to)
Generates a transpose of the nonzero pattern of A on the CPU. More...

void absval (const magmaFloatComplex &from, magmaFloatComplex &to)
Generates a transpose with absolute values of A on the CPU. More...

magma_int_t magma_cparict_candidates (magma_c_matrix L0, magma_c_matrix L, magma_c_matrix LT, magma_c_matrix *L_new, magma_queue_t queue)
This function identifies the candidates like they appear as ILU1 fill-in. More...

magma_int_t magma_cparic_sweep_sync (magma_c_matrix *A, magma_c_matrix *L, magma_queue_t queue)
This function does one synchronized ParILU sweep. More...

magma_int_t magma_cmatrix_cup (magma_c_matrix A, magma_c_matrix B, magma_c_matrix *U, magma_queue_t queue)
Generates a list of matrix entries being in either matrix. More...

magma_int_t magma_cparilut_thrsrm (magma_int_t order, magma_c_matrix *A, float *thrs, magma_queue_t queue)
Removes any element with absolute value smaller equal or larger equal thrs from the matrix and compacts the whole thing. More...

magma_int_t magma_cparilut_thrsrm_U (magma_int_t order, magma_c_matrix L, magma_c_matrix *A, float *thrs, magma_queue_t queue)
Removes any element with absolute value smaller equal or larger equal thrs from the matrix and compacts the whole thing. More...

magma_int_t magma_cparilut_thrsrm_semilinked (magma_c_matrix *U, magma_c_matrix *US, float *thrs, magma_queue_t queue)
Removes any element with absolute value smaller thrs from the matrix. More...

magma_int_t magma_cparilut_rmselected (magma_c_matrix R, magma_c_matrix *A, magma_queue_t queue)
Removes a selected list of elements from the matrix. More...

magma_int_t magma_cparilut_selectoneperrow (magma_int_t order, magma_c_matrix *A, magma_c_matrix *oneA, magma_queue_t queue)
This function takes a list of candidates with residuals, and selects the largest in every row. More...

magma_int_t magma_cparilut_selecttwoperrow (magma_int_t order, magma_c_matrix *A, magma_c_matrix *oneA, magma_queue_t queue)
This function takes a list of candidates with residuals, and selects the largest in every row. More...

magma_int_t magma_cparilut_selectoneperrowthrs_lower (magma_c_matrix L, magma_c_matrix U, magma_c_matrix *A, float rtol, magma_c_matrix *oneA, magma_queue_t queue)
This function takes a list of candidates with residuals, and selects the largest in every row. More...

magma_int_t magma_cparilut_selectoneperrowthrs_upper (magma_c_matrix L, magma_c_matrix U, magma_c_matrix *A, float rtol, magma_c_matrix *oneA, magma_queue_t queue)
This function takes a list of candidates with residuals, and selects the largest in every row. More...

magma_int_t magma_cparilut_preselect (magma_int_t order, magma_c_matrix *A, magma_c_matrix *oneA, magma_queue_t queue)
This function takes a list of candidates with residuals, and selects the largest in every row. More...

magma_int_t magma_cparilut_preselect_scale (magma_c_matrix *L, magma_c_matrix *oneL, magma_c_matrix *U, magma_c_matrix *oneU, magma_queue_t queue)
This function takes a list of candidates with residuals, and selects the largest in every row. More...

magma_int_t magma_cmatrix_addrowindex (magma_c_matrix *A, magma_queue_t queue)
Adds to a CSR matrix an array containing the rowindexes. More...

magma_int_t magma_cparilut_transpose (magma_c_matrix A, magma_c_matrix *B, magma_queue_t queue)
Transposes a matrix that already contains rowidx. More...

magma_int_t magma_cparilut_transpose_select_one (magma_c_matrix A, magma_c_matrix *B, magma_queue_t queue)
This is a special routine with very limited scope. More...

magma_int_t magma_cmatrix_createrowptr (magma_int_t n, magma_index_t *row, magma_queue_t queue)
This function generates a rowpointer out of a row-wise element count in parallel. More...

magma_int_t magma_cparilut_create_collinkedlist (magma_c_matrix A, magma_c_matrix *B, magma_queue_t queue)
For the matrix U in CSR (row-major) this creates B containing a row-ptr to the columns and a linked list for the elements. More...

magma_int_t magma_cmatrix_swap (magma_c_matrix *A, magma_c_matrix *B, magma_queue_t queue)
Swaps two matrices. More...

magma_int_t magma_cmatrix_cap (magma_c_matrix A, magma_c_matrix B, magma_c_matrix *U, magma_queue_t queue)
Generates a list of matrix entries being in both matrices. More...

magma_int_t magma_cmatrix_negcap (magma_c_matrix A, magma_c_matrix B, magma_c_matrix *U, magma_queue_t queue)
Generates a list of matrix entries being part of A but not of B. More...

magma_int_t magma_cmatrix_tril_negcap (magma_c_matrix A, magma_c_matrix B, magma_c_matrix *U, magma_queue_t queue)
Generates a list of matrix entries being part of tril(A) but not of B. More...

magma_int_t magma_cmatrix_tril (magma_c_matrix A, magma_c_matrix *U, magma_queue_t queue)
Generates a list of matrix entries being part of tril(A). More...

magma_int_t magma_cmatrix_triu (magma_c_matrix A, magma_c_matrix *U, magma_queue_t queue)
Generates a list of matrix entries being part of triu(A). More...

magma_int_t magma_cmatrix_triu_negcap (magma_c_matrix A, magma_c_matrix B, magma_c_matrix *U, magma_queue_t queue)
Generates a list of matrix entries being part of triu(A) but not of B. More...

magma_int_t magma_cparilut_elementsum (magma_c_matrix A, float *sum, magma_queue_t queue)
Computes the sum of the absolute values in this array / matrixlist. More...

magma_int_t magma_cparilut_sweep (magma_c_matrix *A, magma_c_matrix *L, magma_c_matrix *U, magma_queue_t queue)
This function does an ParILU sweep. More...

magma_int_t magma_cparilut_sweep_semilinked (magma_c_matrix *A, magma_c_matrix *L, magma_c_matrix *US, magma_queue_t queue)
This function does an ParILU sweep. More...

magma_int_t magma_cparilut_sweep_list (magma_c_matrix *A, magma_c_matrix *L, magma_c_matrix *U, magma_queue_t queue)
This function does an ParILU sweep. More...

magma_int_t magma_cparilut_residuals_semilinked (magma_c_matrix A, magma_c_matrix L, magma_c_matrix US, magma_c_matrix *L_new, magma_queue_t queue)
This function computes the residuals. More...

magma_int_t magma_cparilut_residuals_transpose (magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix *U_new, magma_queue_t queue)
This function computes the residuals. More...

magma_int_t magma_cparilut_residuals (magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix *L_new, magma_queue_t queue)
This function computes the residuals. More...

magma_int_t magma_cparilut_residuals_list (magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix *L_new, magma_queue_t queue)
This function computes the residuals. More...

magma_int_t magma_cparilut_sweep_linkedlist (magma_c_matrix *A, magma_c_matrix *L, magma_c_matrix *U, magma_queue_t queue)
This function does an ParILU sweep. More...

magma_int_t magma_cparilut_residuals_linkedlist (magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix *L_new, magma_queue_t queue)
This function computes the residuals. More...

magma_int_t magma_cparilut_colmajor (magma_c_matrix A, magma_c_matrix *AC, magma_queue_t queue)
This function creates a col-pointer and a linked list along the columns for a row-major CSR matrix. More...

magma_int_t magma_cparilut_reorder (magma_c_matrix *LU, magma_queue_t queue)
This routine reorders the matrix (inplace) for easier access. More...

magma_int_t magma_cparilut_colmajorup (magma_c_matrix A, magma_c_matrix *AC, magma_queue_t queue)
This function creates a col-pointer and a linked list along the columns for a row-major CSR matrix. More...

magma_int_t magma_cparilut_insert (magma_int_t *num_rmL, magma_int_t *num_rmU, magma_index_t *rm_locL, magma_index_t *rm_locU, magma_c_matrix *L_new, magma_c_matrix *U_new, magma_c_matrix *L, magma_c_matrix *U, magma_c_matrix *UR, magma_queue_t queue)
Inserts for the iterative dynamic ILU an new element in the (empty) place. More...

magma_int_t magma_cparilut_candidates_linkedlist (magma_c_matrix L0, magma_c_matrix U0, magma_c_matrix L, magma_c_matrix U, magma_c_matrix UR, magma_c_matrix *L_new, magma_c_matrix *U_new, magma_queue_t queue)
This function identifies the candidates like they appear as ILU1 fill-in. More...

magma_int_t magma_cparilut_candidates (magma_c_matrix L0, magma_c_matrix U0, magma_c_matrix L, magma_c_matrix U, magma_c_matrix *L_new, magma_c_matrix *U_new, magma_queue_t queue)
This function identifies the candidates like they appear as ILU1 fill-in. More...

magma_int_t magma_cparilut_candidates_semilinked (magma_c_matrix L0, magma_c_matrix U0, magma_c_matrix L, magma_c_matrix U, magma_c_matrix UT, magma_c_matrix *L_new, magma_c_matrix *U_new, magma_queue_t queue)
This function identifies the candidates like they appear as ILU1 fill-in. More...

magma_int_t magma_cparilut_rm_thrs (float *thrs, magma_int_t *num_rm, magma_c_matrix *LU, magma_c_matrix *LU_new, magma_index_t *rm_loc, magma_queue_t queue)
This routine removes matrix entries from the structure that are smaller than the threshold. More...

magma_int_t magma_cparilut_count (magma_c_matrix L, magma_int_t *num, magma_queue_t queue)
This is a helper routine counting elements in a matrix in unordered Magma_CSRLIST format. More...

magma_int_t magma_cparilut_select_candidates_L (magma_int_t *num_rm, magma_index_t *rm_loc, magma_c_matrix *L_new, magma_queue_t queue)
Screens the new candidates for multiple elements in the same row. More...

magma_int_t magma_cparilut_select_candidates_U (magma_int_t *num_rm, magma_index_t *rm_loc, magma_c_matrix *L_new, magma_queue_t queue)
Screens the new candidates for multiple elements in the same row. More...

magma_int_t magma_cparilut_set_approx_thrs (magma_int_t num_rm, magma_c_matrix *LU, magma_int_t order, float *thrs, magma_queue_t queue)
This routine approximates the threshold for removing num_rm elements. More...

magma_int_t magma_cparilut_set_thrs_randomselect (magma_int_t num_rm, magma_c_matrix *LU, magma_int_t order, float *thrs, magma_queue_t queue)
This routine approximates the threshold for removing num_rm elements. More...

magma_int_t magma_cparilut_set_thrs_L_scaled (magma_int_t num_rm, magma_c_matrix *L, magma_c_matrix *U, magma_int_t order, float *thrs, magma_queue_t queue)
This routine approximates the threshold for removing num_rm elements. More...

magma_int_t magma_cparilut_set_thrs_randomselect_approx2 (magma_int_t num_rm, magma_c_matrix *LU, magma_int_t order, float *thrs, magma_queue_t queue)
This routine approximates the threshold for removing num_rm elements. More...

magma_int_t magma_cparilut_set_thrs_randomselect_approx (magma_int_t num_rm, magma_c_matrix *LU, magma_int_t order, float *thrs, magma_queue_t queue)
This routine approximates the threshold for removing num_rm elements. More...

magma_int_t magma_cparilut_set_thrs_randomselect_factors (magma_int_t num_rm, magma_c_matrix *L, magma_c_matrix *U, magma_int_t order, float *thrs, magma_queue_t queue)
This routine approximates the threshold for removing num_rm elements. More...

magma_int_t magma_cparilut_set_exact_thrs (magma_int_t num_rm, magma_c_matrix *LU, magma_int_t order, magmaFloatComplex *thrs, magma_queue_t queue)
This routine provides the exact threshold for removing num_rm elements. More...

magma_int_t magma_cparilut_set_approx_thrs_inc (magma_int_t num_rm, magma_c_matrix *LU, magma_int_t order, magmaFloatComplex *thrs, magma_queue_t queue)
This routine provides the exact threshold for removing num_rm elements. More...

magma_int_t magma_cparilut_sweep_sync (magma_c_matrix *A, magma_c_matrix *L, magma_c_matrix *U, magma_queue_t queue)
This function does one synchronized ParILU sweep. More...

magma_int_t magma_cparilut_align_residuals (magma_c_matrix L, magma_c_matrix U, magma_c_matrix *Lnew, magma_c_matrix *Unew, magma_queue_t queue)
This function scales the residuals of a lower triangular factor L with the diagonal of U. More...

magma_int_t magma_cfrobenius (magma_c_matrix A, magma_c_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_cnonlinres (magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_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_cilures (magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_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_cicres (magma_c_matrix A, magma_c_matrix C, magma_c_matrix CT, magma_c_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_cinitguess (magma_c_matrix A, magma_c_matrix *L, magma_c_matrix *U, magma_queue_t queue)
Computes an initial guess for the ParILU/ParIC. More...

magma_int_t magma_cinitrecursiveLU (magma_c_matrix A, magma_c_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_cmLdiagadd (magma_c_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_cselect (magmaFloatComplex *a, magma_int_t size, magma_int_t k, magma_queue_t queue)
An efficient implementation of Blum, Floyd, Pratt, Rivest, and Tarjan's worst-case linear selection algorithm. More...

magma_int_t magma_cselectrandom (magmaFloatComplex *a, magma_int_t size, magma_int_t k, magma_queue_t queue)
An efficient implementation of Blum, Floyd, Pratt, Rivest, and Tarjan's worst-case linear selection algorithm. More...

magma_int_t magma_csolverinfo (magma_c_solver_par *solver_par, magma_c_preconditioner *precond_par, magma_queue_t queue)
Prints information about a previously called solver. More...

magma_int_t magma_csolverinfo_free (magma_c_solver_par *solver_par, magma_c_preconditioner *precond_par, magma_queue_t queue)
Frees any memory assocoiated with the verbose mode of solver_par. More...

magma_int_t magma_csolverinfo_init (magma_c_solver_par *solver_par, magma_c_preconditioner *precond_par, magma_queue_t queue)
Initializes all solver and preconditioner parameters. More...

magma_int_t magma_ceigensolverinfo_init (magma_c_solver_par *solver_par, magma_queue_t queue)
Initializes space for eigensolvers. More...

magma_int_t magma_csort (magmaFloatComplex *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_cmsort (magmaFloatComplex *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_cindexsort (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_cindexsortval (magma_index_t *x, magmaFloatComplex *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_cmorderstatistics (magmaFloatComplex *val, magma_index_t *col, magma_index_t *row, magma_int_t length, magma_int_t k, magma_int_t r, magmaFloatComplex *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_corderstatistics (magmaFloatComplex *val, magma_int_t length, magma_int_t k, magma_int_t r, magmaFloatComplex *element, magma_queue_t queue)
Identifies the kth smallest/largest element in an array. More...

magma_int_t magma_corderstatistics_inc (magmaFloatComplex *val, magma_int_t length, magma_int_t k, magma_int_t inc, magma_int_t r, magmaFloatComplex *element, magma_queue_t queue)
Approximates the k-th smallest element in an array by using order-statistics with step-size inc. More...

magma_int_t magma_cbitonic_sort (magma_int_t start, magma_int_t length, magmaFloatComplex *seq, magma_int_t flag, magma_queue_t queue)
Approximates the k-th smallest element in an array by using order-statistics with step-size inc. More...

magma_int_t magma_cparse_opts (int argc, char **argv, magma_copts *opts, int *matrices, magma_queue_t queue)
Parses input options for a solver. More...

magma_int_t magma_cvinit (magma_c_matrix *x, magma_location_t mem_loc, magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex values, magma_queue_t queue)
Allocates memory for magma_c_matrix and initializes it with the passed value. More...

magma_int_t magma_cvinit_rand (magma_c_matrix *x, magma_location_t mem_loc, magma_int_t num_rows, magma_int_t num_cols, magma_queue_t queue)
Allocates memory for magma_c_matrix and initializes it with random values. More...

magma_int_t magma_cprint_vector (magma_c_matrix x, magma_int_t offset, magma_int_t visulen, magma_queue_t queue)
Visualizes part of a vector of type magma_c_matrix. More...

magma_int_t magma_cvread (magma_c_matrix *x, magma_int_t length, char *filename, magma_queue_t queue)
Reads in a float vector of length "length". More...

magma_int_t magma_cvspread (magma_c_matrix *x, const char *filename, magma_queue_t queue)
Reads in a sparse vector-block stored in COO format. More...

magma_int_t magma_cwrite_vector (magma_c_matrix A, const char *filename, magma_queue_t queue)
Writes a vector to a file. More...

magma_int_t magma_cvset (magma_int_t m, magma_int_t n, magmaFloatComplex *val, magma_c_matrix *v, magma_queue_t queue)
Passes a vector to MAGMA. More...

magma_int_t magma_cvget (magma_c_matrix v, magma_int_t *m, magma_int_t *n, magmaFloatComplex **val, magma_queue_t queue)
Passes a MAGMA vector back. More...

magma_int_t magma_cvset_dev (magma_int_t m, magma_int_t n, magmaFloatComplex_ptr val, magma_c_matrix *v, magma_queue_t queue)
Passes a vector to MAGMA (located on DEV). More...

magma_int_t magma_cvget_dev (magma_c_matrix v, magma_int_t *m, magma_int_t *n, magmaFloatComplex_ptr *val, magma_queue_t queue)
Passes a MAGMA vector back (located on DEV). More...

magma_int_t magma_cvtranspose (magma_c_matrix x, magma_c_matrix *y, magma_queue_t queue)
Transposes a vector from col to row major and vice versa. More...

magma_int_t magma_cmbackinsert_batched_gpu (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix *M, magma_index_t *sizes, magma_index_t *locations, magmaFloatComplex *trisystems, magmaFloatComplex *rhs, magma_queue_t queue)
Inserts the values into the preconditioner matrix. More...

magma_int_t magma_cisaigenerator_16_gpu (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix *M, magma_index_t *sizes, magma_index_t *locations, magmaFloatComplex *trisystems, magmaFloatComplex *rhs, magma_queue_t queue)
This routine is designet to combine all kernels into one. More...

magma_int_t magma_cisaigenerator_32_gpu (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix *M, magma_index_t *sizes, magma_index_t *locations, magmaFloatComplex *trisystems, magmaFloatComplex *rhs, magma_queue_t queue)
This routine is designet to combine all kernels into one. More...

magma_int_t magma_cisaigenerator_8_gpu (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix *M, magma_index_t *sizes, magma_index_t *locations, magmaFloatComplex *trisystems, magmaFloatComplex *rhs, magma_queue_t queue)
This routine is designet to combine all kernels into one. More...

magma_int_t magma_cisai_generator_regs (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix *M, magma_queue_t queue)
This routine is designet to combine all kernels into one. More...

magma_int_t magma_cgeisai_maxblock (magma_c_matrix L, magma_c_matrix *MT, magma_queue_t queue)
This routine maximizes the pattern for the ISAI preconditioner. More...

magma_int_t magma_cmtrisolve_batched_gpu (magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix LC, magma_index_t *sizes, magma_index_t *locations, magmaFloatComplex *trisystems, magmaFloatComplex *rhs, magma_queue_t queue)
Does all triangular solves. More...

magma_int_t magma_cmisai_blockstruct_gpu (magma_int_t n, magma_int_t bs, magma_int_t offs, magma_uplo_t uplotype, magma_c_matrix *A, magma_queue_t queue)
Generates a block-diagonal sparsity pattern with block-size bs on the GPU. More...

void magmablas_clag2z_sparse (magma_int_t M, magma_int_t N, const magmaFloatComplex *SA, magma_int_t ldsa, magmaDoubleComplex *A, magma_int_t lda, magma_queue_t queue, magma_int_t *info)
CLAG2Z converts a COMPLEX matrix SA to a COMPLEX_16 matrix A. More...

magma_int_t magma_clobpcg_res (magma_int_t num_rows, magma_int_t num_vecs, magmaFloat_ptr evalues, magmaFloatComplex_ptr X, magmaFloatComplex_ptr R, magmaFloat_ptr res, magma_queue_t queue)
This routine computes for Block-LOBPCG, the set of residuals. More...

magma_int_t magma_clobpcg_shift (magma_int_t num_rows, magma_int_t num_vecs, magma_int_t shift, magmaFloatComplex_ptr x, magma_queue_t queue)
For a Block-LOBPCG, the set of residuals (entries consecutive in memory) shrinks and the vectors are shifted in case shift residuals drop below threshold. More...

magma_int_t magma_ccopyscale (magma_int_t n, magma_int_t k, magmaFloatComplex_ptr r, magmaFloatComplex_ptr v, magmaFloatComplex_ptr skp, magma_queue_t queue)
Computes the correction term of the pipelined GMRES according to P. More...

magma_int_t magma_cdiagcheck (magma_c_matrix dA, magma_queue_t queue)
This routine checks for a CSR matrix whether there exists a zero on the diagonal. More...

magma_int_t magma_vector_clag2z (magma_c_vector x, magma_z_matrix *y, magma_queue_t queue)
convertes magma_c_vector from C to Z More...

magma_int_t magma_sparse_matrix_clag2z (magma_c_sparse_matrix A, magma_z_matrix *B, magma_queue_t queue)
convertes magma_c_sparse_matrix from C to Z More...

magma_int_t magma_cmconjugate (magma_c_matrix *A, magma_queue_t queue)
This function conjugates a matrix. More...

magma_int_t magma_cmcsrcompressor_gpu (magma_c_matrix *A, magma_queue_t queue)
Removes zeros in a CSR matrix. More...

## Function Documentation

 magma_int_t magma_cresidual ( magma_c_matrix A, magma_c_matrix b, magma_c_matrix x, float * res, magma_queue_t queue )

Computes the residual ||b-Ax|| for a solution approximation x.

Parameters
 [in] A magma_c_matrix input matrix A [in] b magma_c_matrix RHS b [in] x magma_c_matrix solution approximation [out] res magmaFloatComplex* return residual [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cresidual_slice ( magma_int_t start, magma_int_t end, magma_c_matrix A, magma_c_matrix b, magma_c_matrix x, float * res, magma_queue_t queue )

Computes the residual r=||b-Ax|| for the slice r(start:end) for a solution approximation x.

Parameters
 [in] start magma_int_t start of slice (row-index) [in] end magma_int_t end of slice (row-index) [in] A magma_c_matrix input matrix A [in] b magma_c_matrix RHS b [in] x magma_c_matrix solution approximation [out] res magmaFloatComplex* return residual [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cresidualvec ( magma_c_matrix A, magma_c_matrix b, magma_c_matrix x, magma_c_matrix * r, float * 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

Parameters
 [in] A magma_c_matrix input matrix A [in] b magma_c_matrix RHS b [in] x magma_c_matrix solution approximation [in,out] r magma_c_matrix* residual vector [out] res magmaFloatComplex* return residual [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_precond ( magma_c_matrix A, magma_c_matrix b, magma_c_matrix * x, magma_c_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.

Parameters
 [in] A magma_c_matrix sparse matrix A [in] b magma_c_matrix input vector b [in] x magma_c_matrix* output vector x [in,out] precond magma_c_preconditioner preconditioner [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_precondsetup ( magma_c_matrix A, magma_c_matrix b, magma_c_solver_par * solver, magma_c_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.

Parameters
 [in] A magma_c_matrix sparse matrix M [in] b magma_c_matrix input vector y [in] solver magma_c_solver_par solver structure using the preconditioner [in,out] precond magma_c_preconditioner preconditioner [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_applyprecond ( magma_c_matrix A, magma_c_matrix b, magma_c_matrix * x, magma_c_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.

Parameters
 [in] A magma_c_matrix sparse matrix A [in] b magma_c_matrix input vector b [in,out] x magma_c_matrix* output vector x [in] precond magma_c_preconditioner preconditioner [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_applyprecond_left ( magma_trans_t trans, magma_c_matrix A, magma_c_matrix b, magma_c_matrix * x, magma_c_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.

Parameters
 [in] trans magma_trans_t mode of the preconditioner: MagmaTrans or MagmaNoTrans [in] A magma_c_matrix sparse matrix A [in] b magma_c_matrix input vector b [in,out] x magma_c_matrix* output vector x [in] precond magma_c_preconditioner preconditioner [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_applyprecond_right ( magma_trans_t trans, magma_c_matrix A, magma_c_matrix b, magma_c_matrix * x, magma_c_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.

Parameters
 [in] trans magma_trans_t mode of the preconditioner: MagmaTrans or MagmaNoTrans [in] A magma_c_matrix sparse matrix A [in] b magma_c_matrix input vector b [in,out] x magma_c_matrix* output vector x [in] precond magma_c_preconditioner preconditioner [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_solver ( magma_c_matrix A, magma_c_matrix b, magma_c_matrix * x, magma_copts * zopts, magma_queue_t queue )

Allows the user to choose a solver.

Parameters
 [in] A magma_c_matrix sparse matrix A [in] b magma_c_matrix input vector b [in] x magma_c_matrix* output vector x [in] zopts magma_copts options for solver and preconditioner [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_capplycustomprecond_l ( magma_c_matrix b, magma_c_matrix * x, magma_c_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.

Parameters
 [in] b magma_c_matrix RHS [in,out] x magma_c_matrix* vector to precondition [in,out] precond magma_c_preconditioner* preconditioner parameters [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_capplycustomprecond_r ( magma_c_matrix b, magma_c_matrix * x, magma_c_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.

Parameters
 [in] b magma_c_matrix RHS [in,out] x magma_c_matrix* vector to precondition [in,out] precond magma_c_preconditioner* preconditioner parameters [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_ccsrsplit ( magma_int_t offset, magma_int_t bsize, magma_c_matrix A, magma_c_matrix * D, magma_c_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.

Parameters
 [in] offset magma_int_t size of the first block [in] bsize magma_int_t size of the diagonal blocks [in] A magma_c_matrix CSR input matrix [out] D magma_c_matrix* CSR matrix containing diagonal blocks [out] R magma_c_matrix* CSR matrix containing rest [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cdomainoverlap ( 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.

Parameters
 [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_cmfree ( magma_c_matrix * A, magma_queue_t queue )

Free the memory of a magma_c_matrix.

Parameters
 [in,out] A magma_c_matrix* matrix to free [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cprecondfree ( magma_c_preconditioner * precond_par, magma_queue_t queue )

Free a preconditioner.

Parameters
 [in,out] precond_par magma_c_preconditioner* structure containing all preconditioner information [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmprepare_batched ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix LC, magma_index_t * sizes, magma_index_t * locations, magmaFloatComplex * trisystems, magmaFloatComplex * rhs, magma_queue_t queue )

Takes a sparse matrix and generates an array containing the sizes of the different systems an array containing the indices with the locations in the sparse matrix where the data comes from and goes back to an array containing all the sparse triangular systems.

    - padded with zeros to size 32x32
an array containing the RHS

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in] L magma_c_matrix Matrix in CSR format [in] LC magma_c_matrix same matrix, also CSR, but col-major [in,out] sizes magma_int_t* Number of Elements that are replaced. [in,out] locations magma_int_t* Array indicating the locations. [in,out] trisystems magmaFloatComplex* trisystems [in,out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmtrisolve_batched ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix LC, magma_index_t * sizes, magma_index_t * locations, magmaFloatComplex * trisystems, magmaFloatComplex * rhs, magma_queue_t queue )

Does all triangular solves.

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in] L magma_c_matrix Matrix in CSR format [in] LC magma_c_matrix same matrix, also CSR, but col-major [out] sizes magma_int_t* Number of Elements that are replaced. [out] locations magma_int_t* Array indicating the locations. [out] trisystems magmaFloatComplex* trisystems [out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmbackinsert_batched ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix * M, magma_index_t * sizes, magma_index_t * locations, magmaFloatComplex * trisystems, magmaFloatComplex * rhs, magma_queue_t queue )

Inserts the values into the preconditioner matrix.

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in,out] M magma_c_matrix* SPAI preconditioner CSR col-major [out] sizes magma_int_t* Number of Elements that are replaced. [out] locations magma_int_t* Array indicating the locations. [out] trisystems magmaFloatComplex* trisystems [out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmiluspai_sizecheck ( magma_c_matrix A, magma_index_t batchsize, magma_index_t * maxsize, magma_queue_t queue )

Checks for a matrix whether the batched ISAI works for a given thread-block size.

Parameters
 [in] A magma_c_matrix system matrix [in] batchsize magma_int_t Size of the batch (GPU thread block). [out] maxsize magma_int_t* maximum A(:,i) and A(i,:). [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmisai_blockstruct ( magma_int_t n, magma_int_t bs, magma_int_t offs, magma_uplo_t uplotype, magma_c_matrix * A, magma_queue_t queue )

Generates a block-diagonal sparsity pattern with block-size bs.

Parameters
 [in] n magma_int_t Size of the matrix. [in] bs magma_int_t Size of the diagonal blocks. [in] offs magma_int_t Size of the first diagonal block. [in] uplotype magma_uplo_t lower or upper triangular [in,out] A magma_c_matrix* Generated sparsity pattern matrix. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_crowentries ( magma_c_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.

Parameters
 [in,out] A magma_c_matrix* sparse matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cdiameter ( magma_c_matrix * A, magma_queue_t queue )

Computes the diameter of a sparse matrix and stores the value in diameter.

Parameters
 [in,out] A magma_c_matrix* sparse matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_csr_compressor ( magmaFloatComplex ** val, magma_index_t ** row, magma_index_t ** col, magmaFloatComplex ** 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.

Parameters
 [in] val magmaFloatComplex** 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 magmaFloatComplex** 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_cmconvert ( magma_c_matrix A, magma_c_matrix * B, magma_storage_t old_format, magma_storage_t new_format, magma_queue_t queue )

Converter between different sparse storage formats.

Parameters
 [in] A magma_c_matrix sparse matrix A [out] B magma_c_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_cmcsrcompressor ( magma_c_matrix * A, magma_queue_t queue )

Removes zeros in a CSR matrix.

Parameters
 [in,out] A magma_c_matrix* input/output matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_ccsrset ( magma_int_t m, magma_int_t n, magma_index_t * row, magma_index_t * col, magmaFloatComplex * val, magma_c_matrix * A, magma_queue_t queue )

Passes a CSR matrix to MAGMA.

Parameters
 [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 magmaFloatComplex* array containing matrix entries [out] A magma_c_matrix* matrix in magma sparse matrix format [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_ccsrget ( magma_c_matrix A, magma_int_t * m, magma_int_t * n, magma_index_t ** row, magma_index_t ** col, magmaFloatComplex ** val, magma_queue_t queue )

Passes a MAGMA matrix to CSR structure.

Parameters
 [in] A magma_c_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 magmaFloatComplex* array containing matrix entries [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_ccsrset_gpu ( magma_int_t m, magma_int_t n, magmaIndex_ptr row, magmaIndex_ptr col, magmaFloatComplex_ptr val, magma_c_matrix * A, magma_queue_t queue )

Passes a CSR matrix to MAGMA (located on DEV).

Parameters
 [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 magmaFloatComplex_ptr array containing matrix entries [out] A magma_c_matrix* matrix in magma sparse matrix format [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_ccsrget_gpu ( magma_c_matrix A, magma_int_t * m, magma_int_t * n, magmaIndex_ptr * row, magmaIndex_ptr * col, magmaFloatComplex_ptr * val, magma_queue_t queue )

Passes a MAGMA matrix to CSR structure (located on DEV).

Parameters
 [in] A magma_c_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 magmaFloatComplex_ptr array containing matrix entries [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmdiagdom ( magma_c_matrix M, float * min_dd, float * max_dd, float * avg_dd, magma_queue_t queue )

This routine takes a CSR matrix and computes the average diagonal dominance.

For each row i, it computes the abs(d_ii)/sum_j(abs(a_ij)). It returns max, min, and average.

Parameters
 [in] M magma_c_matrix System matrix. [out] min_dd float Smallest diagonal dominance. [out] max_dd float Largest diagonal dominance. [out] avg_dd float Average diagonal dominance. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmbdiagdom ( magma_c_matrix M, magma_c_matrix blocksizes, float * min_dd, float * max_dd, float * avg_dd, magma_queue_t queue )

This routine takes a CSR matrix and computes the average block-diagonal dominance.

For each row i, it computes the abs( D_(i,:) ) / abs( A(i,:) \ D_(i,:) ). It returns max, min, and average. The input vector bsz contains the blocksizes.

Parameters
 [in] M magma_c_matrix System matrix. [in] blocksizes magma_c_matrix Vector containing blocksizes (as DoubleComplex). [out] min_dd float Smallest diagonal dominance. [out] max_dd float Largest diagonal dominance. [out] avg_dd float Average diagonal dominance. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmdiff ( magma_c_matrix A, magma_c_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 )

Parameters
 [in] A magma_c_matrix sparse matrix in CSR [in] B magma_c_matrix sparse matrix in CSR [out] res real_Double_t* residual [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmfrobenius ( magma_c_matrix A, magma_c_matrix B, magma_c_matrix S, float * norm, magma_queue_t queue )

Computes the Frobenius norm || A - B ||_S on the sparsity pattern of S.

Parameters
 [in] A magma_c_matrix input sparse matrix in CSR [in] B magma_c_matrix input sparse matrix in CSR [in] S magma_c_matrix input sparsity pattern in CSR [out] norm float* Frobenius norm of difference on sparsity pattern S [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmgenerator ( magma_int_t n, magma_int_t offdiags, magma_index_t * diag_offset, magmaFloatComplex * diag_vals, magma_c_matrix * A, magma_queue_t queue )

Generate a symmetric n x n CSR matrix for a stencil.

Parameters
 [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 magmaFloatComplex* array containing the values  (length offsets+1)  [out] A magma_c_matrix* matrix to generate [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cm_27stencil ( magma_int_t n, magma_c_matrix * A, magma_queue_t queue )

Generate a 27-point stencil for a 3D FD discretization.

Parameters
 [in] n magma_int_t number of rows [out] A magma_c_matrix* matrix to generate [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cm_5stencil ( magma_int_t n, magma_c_matrix * A, magma_queue_t queue )

Generate a 5-point stencil for a 2D FD discretization.

Parameters
 [in] n magma_int_t number of rows [out] A magma_c_matrix* matrix to generate [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_csymbilu ( magma_c_matrix * A, magma_int_t levels, magma_c_matrix * L, magma_c_matrix * U, magma_queue_t queue )

This routine performs a symbolic ILU factorization.

The algorithm is taken from an implementation written by Edmond Chow.

Parameters
 [in,out] A magma_c_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_c_matrix* output lower triangular matrix in magma sparse matrix format empty on function call [out] U magma_c_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 read_c_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, magmaFloatComplex ** 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.

Parameters
 [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 magmaFloatComplex** 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 magma_cwrite_csr_mtx ( magma_c_matrix A, magma_order_t MajorType, const char * filename, magma_queue_t queue )

Writes a CSR matrix to a file using Matrix Market format.

Parameters
 [in] A magma_c_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 magma_cprint_csr_mtx ( magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, magmaFloatComplex ** 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.

Parameters
 [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 magmaFloatComplex** 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_cprint_csr ( magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, magmaFloatComplex ** val, magma_index_t ** row, magma_index_t ** col, magma_queue_t queue )

Prints a CSR matrix in CSR format.

Parameters
 [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 magmaFloatComplex** 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_cprint_matrix ( magma_c_matrix A, magma_queue_t queue )

Prints a sparse matrix in CSR format.

Parameters
 [in] A magma_c_matrix sparse matrix in Magma_CSR format [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_csr_mtx ( magma_c_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.

Parameters
 [out] A magma_c_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_c_csr_mtxsymm ( magma_c_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!

Parameters
 [out] A magma_c_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_cmlumerge ( magma_c_matrix L, magma_c_matrix U, magma_c_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.

Parameters
 [in] L magma_c_matrix input strictly lower triangular matrix L [in] U magma_c_matrix input upper triangular matrix U [out] A magma_c_matrix* output matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmscale ( magma_c_matrix * A, magma_scale_t scaling, magma_queue_t queue )

Scales a matrix.

Parameters
 [in,out] A magma_c_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_cmscale_matrix_rhs ( magma_c_matrix * A, magma_c_matrix * b, magma_c_matrix * scaling_factors, magma_scale_t scaling, magma_queue_t queue )

Scales a matrix and a right hand side vector of a Ax = b system.

Parameters
 [in,out] A magma_c_matrix* input/output matrix [in,out] b magma_c_matrix* input/output right hand side vector [out] scaling_factors magma_c_matrix* output scaling factors vector [in] scaling magma_scale_t scaling type (unit rownorm / unit diagonal) [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmdiagadd ( magma_c_matrix * A, magmaFloatComplex add, magma_queue_t queue )

Adds a multiple of the Identity matrix to a matrix: A = A+add * I.

Parameters
 [in,out] A magma_c_matrix* input/output matrix [in] add magmaFloatComplex scaling for the identity matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmscale_generate ( magma_int_t n, magma_scale_t * scaling, magma_side_t * side, magma_c_matrix * A, magma_c_matrix * scaling_factors, magma_queue_t queue )

Generates n vectors of scaling factors from the A matrix and stores them in the factors matrix as column vectors in column major ordering.

Parameters
 [in] n magma_int_t number of diagonal scaling matrices [in] scaling magma_scale_t* array of scaling specifiers [in] side magma_side_t* array of side specifiers [in] A magma_c_matrix* input matrix [out] scaling_factors magma_c_matrix* array of diagonal matrices [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmscale_apply ( magma_int_t n, magma_side_t * side, magma_c_matrix * scaling_factors, magma_c_matrix * A, magma_queue_t queue )

Applies n diagonal scaling matrices to a matrix A; n=[1,2], factor[i] is applied to side[i] of the matrix.

Parameters
 [in] n magma_int_t number of diagonal scaling matrices [in] side magma_side_t* array of side specifiers [in] scaling_factors magma_c_matrix* array of diagonal matrices [in,out] A magma_c_matrix* input/output matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cdimv ( magma_c_matrix * vecA, magma_c_matrix * vecB, magma_queue_t queue )

Multiplies a diagonal matrix (vecA) and a vector (vecB).

Parameters
 [in] vecA magma_c_matrix* input matrix [in,out] vecB magma_c_matrix* input/output matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmshrink ( magma_c_matrix A, magma_c_matrix * B, magma_queue_t queue )

Shrinks a non-square matrix (m < n) to the smaller dimension.

Parameters
 [in] A magma_c_matrix sparse matrix A [out] B magma_c_matrix* sparse matrix A [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmslice ( magma_int_t num_slices, magma_int_t slice, magma_c_matrix A, magma_c_matrix * B, magma_c_matrix * ALOC, magma_c_matrix * ANLOC, magma_index_t * comm_i, magmaFloatComplex * 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.

Parameters
 [in] num_slices magma_int_t number of slices [in] slice magma_int_t slice id (0.. num_slices-1) [in] A magma_c_matrix sparse matrix in CSR [out] B magma_c_matrix* sparse matrix in CSR [out] ALOC magma_c_matrix* sparse matrix in CSR [out] ANLOC magma_c_matrix* sparse matrix in CSR [in,out] comm_i magma_int_t* communication plan [in,out] comm_v magmaFloatComplex* 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_cmsupernodal ( magma_int_t * max_bs, magma_c_matrix A, magma_c_matrix * S, magma_queue_t queue )

Generates a block-diagonal sparsity pattern with block-size bs.

Parameters
 [in,out] max_bs magma_int_t* Size of the largest diagonal block. [in] A magma_c_matrix System matrix. [in,out] S magma_c_matrix* Generated sparsity pattern matrix. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmvarsizeblockstruct ( magma_int_t n, magma_int_t * bs, magma_int_t bsl, magma_uplo_t uplotype, magma_c_matrix * A, magma_queue_t queue )

Generates a block-diagonal sparsity pattern with variable block-size.

Parameters
 [in] n magma_int_t Size of the matrix. [in] bs magma_int_t* Vector containing the size of the diagonal blocks. [in] bsl magma_int_t Size of the vector containing the block sizes. [in] uplotype magma_uplo_t lower or upper triangular [in,out] A magma_c_matrix* Generated sparsity pattern matrix. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmtransfer ( magma_c_matrix A, magma_c_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.

Parameters
 [in] A magma_c_matrix sparse matrix A [out] B magma_c_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 c_transpose_csr ( magma_int_t n_rows, magma_int_t n_cols, magma_int_t nnz, magmaFloatComplex * 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, magmaFloatComplex ** 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.

Parameters
 [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 magmaFloatComplex* 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 magmaFloatComplex** 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.
 magma_int_t magma_cmtranspose ( magma_c_matrix A, magma_c_matrix * B, magma_queue_t queue )

Interface to cuSPARSE transpose.

Parameters
 [in] A magma_c_matrix input matrix (CSR) [out] B magma_c_matrix* output matrix (CSR) [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_c_cucsrtranspose ( magma_c_matrix A, magma_c_matrix * B, magma_queue_t queue )

Helper function to transpose CSR matrix.

Using the CUSPARSE CSR2CSC function.

Parameters
 [in] A magma_c_matrix input matrix (CSR) [out] B magma_c_matrix* output matrix (CSR) [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmtransposeconjugate ( magma_c_matrix A, magma_c_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.

Parameters
 [in] A magma_c_matrix input matrix (CSR) [out] B magma_c_matrix* output matrix (CSR) [in] queue magma_queue_t Queue to execute in.
 void cpy ( const magmaFloatComplex & from, magmaFloatComplex & to )
inline

Generates a transpose of A on the CPU.

Parameters
 [in] A magma_c_matrix input matrix (CSR) [out] B magma_c_matrix* output matrix (CSR) [in] queue magma_queue_t Queue to execute in.
 void conjop ( const magmaFloatComplex & from, magmaFloatComplex & to )
inline

Generates a transpose conjugate of A on the CPU.

Parameters
 [in] A magma_c_matrix input matrix (CSR) [out] B magma_c_matrix* output matrix (CSR) [in] queue magma_queue_t Queue to execute in.
 void pass ( const magmaFloatComplex & from, magmaFloatComplex & to )
inline

Generates a transpose of the nonzero pattern of A on the CPU.

Parameters
 [in] A magma_c_matrix input matrix (CSR) [out] B magma_c_matrix* output matrix (CSR) [in] queue magma_queue_t Queue to execute in.
 void absval ( const magmaFloatComplex & from, magmaFloatComplex & to )
inline

Generates a transpose with absolute values of A on the CPU.

Parameters
 [in] A magma_c_matrix input matrix (CSR) [out] B magma_c_matrix* output matrix (CSR) [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparict_candidates ( magma_c_matrix L0, magma_c_matrix L, magma_c_matrix LT, magma_c_matrix * L_new, magma_queue_t queue )

This function identifies the candidates like they appear as ILU1 fill-in.

In this version, the matrices are assumed unordered, the linked list is traversed to acces the entries of a row.

Parameters
 [in] L0 magma_c_matrix tril( ILU(0) ) pattern of original system matrix. [in] L magma_c_matrix Current lower triangular factor. [in] LT magma_c_matrix Transose of the lower triangular factor. [in,out] L_new magma_c_matrix* List of candidates for L in COO format. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparic_sweep_sync ( magma_c_matrix * A, magma_c_matrix * L, magma_queue_t queue )

This function does one synchronized ParILU sweep.

Input and output are different arrays.

Parameters
 [in] A magma_c_matrix* System matrix. [in] L magma_c_matrix* Current approximation for the lower triangular factor The format is sorted CSR. [in] U magma_c_matrix* Current approximation for the upper triangular factor The format is sorted CSC. [out] L_new magma_c_matrix* Current approximation for the lower triangular factor The format is unsorted CSR. [out] U_new magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSC. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_cup ( magma_c_matrix A, magma_c_matrix B, magma_c_matrix * U, magma_queue_t queue )

Generates a list of matrix entries being in either matrix.

U = A B

Parameters
 [in] A magma_c_matrix Input matrix 1. [in,out] B magma_c_matrix Input matrix 2. [out] U magma_c_matrix* Not a real matrix, but the list of all matrix entries included in either A or B. No duplicates. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_thrsrm ( magma_int_t order, magma_c_matrix * A, float * thrs, magma_queue_t queue )

Removes any element with absolute value smaller equal or larger equal thrs from the matrix and compacts the whole thing.

Parameters
 [in] order magma_int_t order == 1: all elements smaller are discarded order == 0: all elements larger are discarded [in,out] A magma_c_matrix* Matrix where elements are removed. [in] thrs float* Threshold: all elements smaller are discarded [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_thrsrm_U ( magma_int_t order, magma_c_matrix L, magma_c_matrix * A, float * thrs, magma_queue_t queue )

Removes any element with absolute value smaller equal or larger equal thrs from the matrix and compacts the whole thing.

Parameters
 [in] order magma_int_t order == 1: all elements smaller are discarded order == 0: all elements larger are discarded [in,out] A magma_c_matrix* Matrix where elements are removed. [in] thrs float* Threshold: all elements smaller are discarded [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_thrsrm_semilinked ( magma_c_matrix * U, magma_c_matrix * US, float * thrs, magma_queue_t queue )

Removes any element with absolute value smaller thrs from the matrix.

It only uses the linked list and skips the removed'' elements

Parameters
 [in,out] A magma_c_matrix* Matrix where elements are removed. [in] thrs float* Threshold: all elements smaller are discarded [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_rmselected ( magma_c_matrix R, magma_c_matrix * A, magma_queue_t queue )

Removes a selected list of elements from the matrix.

Parameters
 [in] R magma_c_matrix Matrix containing elements to be removed. [in,out] A magma_c_matrix* Matrix where elements are removed. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_selectoneperrow ( magma_int_t order, magma_c_matrix * A, magma_c_matrix * oneA, magma_queue_t queue )

This function takes a list of candidates with residuals, and selects the largest in every row.

The output matrix only contains these largest elements (respectively a zero element if there is no candidate for a certain row).

Parameters
 [in] order magma_int_t order==1 -> largest order==0 -> smallest [in] A magma_c_matrix* Matrix where elements are removed. [out] oneA magma_c_matrix* Matrix where elements are removed. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_selecttwoperrow ( magma_int_t order, magma_c_matrix * A, magma_c_matrix * oneA, magma_queue_t queue )

This function takes a list of candidates with residuals, and selects the largest in every row.

The output matrix only contains these largest elements (respectively a zero element if there is no candidate for a certain row).

Parameters
 [in] order magma_int_t order==1 -> largest order==0 -> smallest [in] A magma_c_matrix* Matrix where elements are removed. [out] oneA magma_c_matrix* Matrix where elements are removed. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_selectoneperrowthrs_lower ( magma_c_matrix L, magma_c_matrix U, magma_c_matrix * A, float rtol, magma_c_matrix * oneA, magma_queue_t queue )

This function takes a list of candidates with residuals, and selects the largest in every row.

The output matrix only contains these largest elements (respectively a zero element if there is no candidate for a certain row).

Parameters
 [in] L magma_c_matrix Current lower triangular factor. [in] U magma_c_matrix Current upper triangular factor. [in] A magma_c_matrix* All residuals in L. [in] rtol threshold rtol [out] oneA magma_c_matrix* at most one per row, if larger thrs. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_selectoneperrowthrs_upper ( magma_c_matrix L, magma_c_matrix U, magma_c_matrix * A, float rtol, magma_c_matrix * oneA, magma_queue_t queue )

This function takes a list of candidates with residuals, and selects the largest in every row.

The output matrix only contains these largest elements (respectively a zero element if there is no candidate for a certain row).

Parameters
 [in] L magma_c_matrix Current lower triangular factor. [in] U magma_c_matrix Current upper triangular factor. [in] A magma_c_matrix* All residuals in L. [in] rtol threshold rtol [out] oneA magma_c_matrix* at most one per row, if larger thrs. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_preselect ( magma_int_t order, magma_c_matrix * A, magma_c_matrix * oneA, magma_queue_t queue )

This function takes a list of candidates with residuals, and selects the largest in every row.

The output matrix only contains these largest elements (respectively a zero element if there is no candidate for a certain row).

Parameters
 [in] order magma_int_t order==0 lower triangular order==1 upper triangular [in] A magma_c_matrix* Matrix where elements are removed. [out] oneA magma_c_matrix* Matrix where elements are removed. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_preselect_scale ( magma_c_matrix * L, magma_c_matrix * oneL, magma_c_matrix * U, magma_c_matrix * oneU, magma_queue_t queue )

This function takes a list of candidates with residuals, and selects the largest in every row.

The output matrix only contains these largest elements (respectively a zero element if there is no candidate for a certain row).

Parameters
 [in] L magma_c_matrix* Matrix where elements are removed. [in] U magma_c_matrix* Matrix where elements are removed. [out] oneL magma_c_matrix* Matrix where elements are removed. [out] oneU magma_c_matrix* Matrix where elements are removed. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_addrowindex ( magma_c_matrix * A, magma_queue_t queue )

Adds to a CSR matrix an array containing the rowindexes.

Parameters
 [in,out] A magma_c_matrix* Matrix where rowindexes should be added. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_transpose ( magma_c_matrix A, magma_c_matrix * B, magma_queue_t queue )

Transposes a matrix that already contains rowidx.

The idea is to use a linked list.

Parameters
 [in] A magma_c_matrix Matrix to transpose. [out] B magma_c_matrix* Transposed matrix. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_transpose_select_one ( magma_c_matrix A, magma_c_matrix * B, magma_queue_t queue )

This is a special routine with very limited scope.

For a set of fill-in candidates in row-major format, it transposes the a submatrix, i.e. the submatrix consisting of the largest element in every column. This function is only useful for delta<=1.

Parameters
 [in] A magma_c_matrix Matrix to transpose. [out] B magma_c_matrix* Transposed matrix containing only largest elements in each col. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_createrowptr ( magma_int_t n, magma_index_t * row, magma_queue_t queue )

This function generates a rowpointer out of a row-wise element count in parallel.

Parameters
 [in] n magma_indnt_t row-count. [in,out] row magma_index_t* Input: Vector of size n+1 containing the row-counts (offset by one). Output: Rowpointer. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_create_collinkedlist ( magma_c_matrix A, magma_c_matrix * B, magma_queue_t queue )

For the matrix U in CSR (row-major) this creates B containing a row-ptr to the columns and a linked list for the elements.

Parameters
 [in] A magma_c_matrix Matrix to transpose. [out] B magma_c_matrix* Transposed matrix. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_swap ( magma_c_matrix * A, magma_c_matrix * B, magma_queue_t queue )

Swaps two matrices.

Useful if a loop modifies the name of a matrix.

Parameters
 [in,out] A magma_c_matrix* Matrix to be swapped with B. [in,out] B magma_c_matrix* Matrix to be swapped with A. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_cap ( magma_c_matrix A, magma_c_matrix B, magma_c_matrix * U, magma_queue_t queue )

Generates a list of matrix entries being in both matrices.

U = A B

Parameters
 [in] A magma_c_matrix Input matrix 1. [in,out] B magma_c_matrix Input matrix 2. [out] U magma_c_matrix* Not a real matrix, but the list of all matrix entries included in both A and B. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_negcap ( magma_c_matrix A, magma_c_matrix B, magma_c_matrix * U, magma_queue_t queue )

Generates a list of matrix entries being part of A but not of B.

U = A \ B The values of A are preserved.

Parameters
 [in] A magma_c_matrix Element part of this. [in,out] B magma_c_matrix Not part of this. [out] U magma_c_matrix* Not a real matrix, but the list of all matrix entries included in A not in B. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_tril_negcap ( magma_c_matrix A, magma_c_matrix B, magma_c_matrix * U, magma_queue_t queue )

Generates a list of matrix entries being part of tril(A) but not of B.

U = tril(A) \ B The values of A are preserved.

Parameters
 [in] A magma_c_matrix Element part of this. [in,out] B magma_c_matrix Not part of this. [out] U magma_c_matrix* Not a real matrix, but the list of all matrix entries included in A not in B. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_tril ( magma_c_matrix A, magma_c_matrix * U, magma_queue_t queue )

Generates a list of matrix entries being part of tril(A).

U = tril(A) The values of A are preserved.

Parameters
 [in] A magma_c_matrix Element part of this. [in,out] B magma_c_matrix Not part of this. [out] U magma_c_matrix* Not a real matrix, but the list of all matrix entries included in A not in B. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_triu ( magma_c_matrix A, magma_c_matrix * U, magma_queue_t queue )

Generates a list of matrix entries being part of triu(A).

U = triu(A) The values of A are preserved.

Parameters
 [in] A magma_c_matrix Element part of this. [in,out] B magma_c_matrix Not part of this. [out] U magma_c_matrix* Not a real matrix, but the list of all matrix entries included in A not in B. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmatrix_triu_negcap ( magma_c_matrix A, magma_c_matrix B, magma_c_matrix * U, magma_queue_t queue )

Generates a list of matrix entries being part of triu(A) but not of B.

U = triu(A) \ B The values of A are preserved.

Parameters
 [in] A magma_c_matrix Element part of this. [in,out] B magma_c_matrix Not part of this. [out] U magma_c_matrix* Not a real matrix, but the list of all matrix entries included in A not in B. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_elementsum ( magma_c_matrix A, float * sum, magma_queue_t queue )

Computes the sum of the absolute values in this array / matrixlist.

Parameters
 [in] A magma_c_matrix Element list/matrix. [out] U float* Sum of the absolute values. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_sweep ( magma_c_matrix * A, magma_c_matrix * L, magma_c_matrix * U, magma_queue_t queue )

This function does an ParILU sweep.

Parameters
 [in,out] A magma_c_matrix* Current ILU approximation The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] L magma_c_matrix* Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_sweep_semilinked ( magma_c_matrix * A, magma_c_matrix * L, magma_c_matrix * US, magma_queue_t queue )

This function does an ParILU sweep.

Parameters
 [in,out] A magma_c_matrix* Current ILU approximation The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] L magma_c_matrix* Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_sweep_list ( magma_c_matrix * A, magma_c_matrix * L, magma_c_matrix * U, magma_queue_t queue )

This function does an ParILU sweep.

Parameters
 [in,out] A magma_c_matrix* Current ILU approximation The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] L magma_c_matrix* Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_residuals_semilinked ( magma_c_matrix A, magma_c_matrix L, magma_c_matrix US, magma_c_matrix * L_new, magma_queue_t queue )

This function computes the residuals.

Parameters
 [in,out] L magma_c_matrix Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_residuals_transpose ( magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix * U_new, magma_queue_t queue )

This function computes the residuals.

Parameters
 [in,out] L magma_c_matrix Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_residuals ( magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix * L_new, magma_queue_t queue )

This function computes the residuals.

Parameters
 [in,out] L magma_c_matrix Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_residuals_list ( magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix * L_new, magma_queue_t queue )

This function computes the residuals.

Parameters
 [in,out] L magma_c_matrix Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_sweep_linkedlist ( magma_c_matrix * A, magma_c_matrix * L, magma_c_matrix * U, magma_queue_t queue )

This function does an ParILU sweep.

Parameters
 [in,out] A magma_c_matrix* Current ILU approximation The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] L magma_c_matrix* Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_residuals_linkedlist ( magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_matrix * L_new, magma_queue_t queue )

This function computes the residuals.

Parameters
 [in,out] L magma_c_matrix Current approximation for the lower triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_colmajor ( magma_c_matrix A, magma_c_matrix * AC, magma_queue_t queue )

This function creates a col-pointer and a linked list along the columns for a row-major CSR matrix.

Parameters
 [in] A magma_c_matrix The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] AC magma_c_matrix* The matrix A but with row-pointer being for col-major, same with linked list. The values, col and row indices are unchanged. The respective pointers point to the entities of A. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_reorder ( magma_c_matrix * LU, magma_queue_t queue )

This routine reorders the matrix (inplace) for easier access.

Parameters
 [in] LU magma_c_matrix* Current ILU approximation. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_colmajorup ( magma_c_matrix A, magma_c_matrix * AC, magma_queue_t queue )

This function creates a col-pointer and a linked list along the columns for a row-major CSR matrix.

Parameters
 [in] A magma_c_matrix The format is unsorted CSR, the list array is used as linked list pointing to the respectively next entry. [in,out] AC magma_c_matrix* The matrix A but with row-pointer being for col-major, same with linked list. The values, col and row indices are unchanged. The respective pointers point to the entities of A. Already allocated. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_insert ( magma_int_t * num_rmL, magma_int_t * num_rmU, magma_index_t * rm_locL, magma_index_t * rm_locU, magma_c_matrix * L_new, magma_c_matrix * U_new, magma_c_matrix * L, magma_c_matrix * U, magma_c_matrix * UR, magma_queue_t queue )

Inserts for the iterative dynamic ILU an new element in the (empty) place.

Parameters
 [in] num_rmL magma_int_t Number of Elements that are replaced in L. [in] num_rmU magma_int_t Number of Elements that are replaced in U. [in] rm_locL magma_index_t* List containing the locations of the deleted elements. [in] rm_locU magma_index_t* List containing the locations of the deleted elements. [in] L_new magma_c_matrix Elements that will be inserted in L stored in COO format (unsorted). [in] U_new magma_c_matrix Elements that will be inserted in U stored in COO format (unsorted). [in,out] L magma_c_matrix* matrix where new elements are inserted. The format is unsorted CSR, list is used as linked list pointing to the respectively next entry. [in,out] U magma_c_matrix* matrix where new elements are inserted. Row-major. The format is unsorted CSR, list is used as linked list pointing to the respectively next entry. [in,out] UR magma_c_matrix* Same matrix as U, but column-major. The format is unsorted CSR, list is used as linked list pointing to the respectively next entry. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_candidates_linkedlist ( magma_c_matrix L0, magma_c_matrix U0, magma_c_matrix L, magma_c_matrix U, magma_c_matrix UR, magma_c_matrix * L_new, magma_c_matrix * U_new, magma_queue_t queue )

This function identifies the candidates like they appear as ILU1 fill-in.

In this version, the matrices are assumed unordered, the linked list is traversed to acces the entries of a row.

Parameters
 [in] L0 magma_c_matrix tril( ILU(0) ) pattern of original system matrix. [in] U0 magma_c_matrix triu( ILU(0) ) pattern of original system matrix. [in] L magma_c_matrix Current lower triangular factor. [in] U magma_c_matrix Current upper triangular factor transposed. [in] UR magma_c_matrix Current upper triangular factor - col-pointer and col-list. [in,out] LU_new magma_c_matrix* List of candidates for L in COO format. [in,out] LU_new magma_c_matrix* List of candidates for U in COO format. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_candidates ( magma_c_matrix L0, magma_c_matrix U0, magma_c_matrix L, magma_c_matrix U, magma_c_matrix * L_new, magma_c_matrix * U_new, magma_queue_t queue )

This function identifies the candidates like they appear as ILU1 fill-in.

In this version, the matrices are assumed unordered, the linked list is traversed to acces the entries of a row.

Parameters
 [in] L0 magma_c_matrix tril( ILU(0) ) pattern of original system matrix. [in] U0 magma_c_matrix triu( ILU(0) ) pattern of original system matrix. [in] L magma_c_matrix Current lower triangular factor. [in] U magma_c_matrix Current upper triangular factor transposed. [in] UR magma_c_matrix Current upper triangular factor - col-pointer and col-list. [in,out] LU_new magma_c_matrix* List of candidates for L in COO format. [in,out] LU_new magma_c_matrix* List of candidates for U in COO format. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_candidates_semilinked ( magma_c_matrix L0, magma_c_matrix U0, magma_c_matrix L, magma_c_matrix U, magma_c_matrix UT, magma_c_matrix * L_new, magma_c_matrix * U_new, magma_queue_t queue )

This function identifies the candidates like they appear as ILU1 fill-in.

In this version, the matrices are assumed unordered, the linked list is traversed to acces the entries of a row.

Parameters
 [in] L0 magma_c_matrix tril( ILU(0) ) pattern of original system matrix. [in] U0 magma_c_matrix triu( ILU(0) ) pattern of original system matrix. [in] L magma_c_matrix Current lower triangular factor. [in] U magma_c_matrix Current upper triangular factor transposed. [in] UR magma_c_matrix Current upper triangular factor - col-pointer and col-list. [in,out] LU_new magma_c_matrix* List of candidates for L in COO format. [in,out] LU_new magma_c_matrix* List of candidates for U in COO format. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_rm_thrs ( float * thrs, magma_int_t * num_rm, magma_c_matrix * LU, magma_c_matrix * LU_new, magma_index_t * rm_loc, magma_queue_t queue )

This routine removes matrix entries from the structure that are smaller than the threshold.

It only counts the elements deleted, does not save the locations.

Parameters
 [out] thrs magmaFloatComplex* Thrshold for removing elements. [out] num_rm magma_int_t* Number of Elements that have been removed. [in,out] LU magma_c_matrix* Current ILU approximation where the identified smallest components are deleted. [in,out] LUC magma_c_matrix* Corresponding col-list. [in,out] LU_new magma_c_matrix* List of candidates in COO format. [out] rm_loc magma_index_t* List containing the locations of the elements deleted. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_count ( magma_c_matrix L, magma_int_t * num, magma_queue_t queue )

This is a helper routine counting elements in a matrix in unordered Magma_CSRLIST format.

Parameters
 [in] L magma_c_matrix* Matrix in Magm_CSRLIST format [out] num magma_index_t* Number of elements counted. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_select_candidates_L ( magma_int_t * num_rm, magma_index_t * rm_loc, magma_c_matrix * L_new, magma_queue_t queue )

Screens the new candidates for multiple elements in the same row.

We allow for at most one new element per row. This changes the algorithm, but pays off in performance.

Parameters
 [in] num_rmL magma_int_t Number of Elements that are replaced. [in] num_rmU magma_int_t Number of Elements that are replaced. [in] rm_loc magma_int_t* Number of Elements that are replaced by distinct threads. [in] L_new magma_c_matrix* Elements that will be inserted stored in COO format (unsorted). [in] U_new magma_c_matrix* Elements that will be inserted stored in COO format (unsorted). [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_select_candidates_U ( magma_int_t * num_rm, magma_index_t * rm_loc, magma_c_matrix * L_new, magma_queue_t queue )

Screens the new candidates for multiple elements in the same row.

We allow for at most one new element per row. This changes the algorithm, but pays off in performance.

Parameters
 [in] num_rmL magma_int_t Number of Elements that are replaced. [in] num_rmU magma_int_t Number of Elements that are replaced. [in] rm_loc magma_int_t* Number of Elements that are replaced by distinct threads. [in] L_new magma_c_matrix* Elements that will be inserted stored in COO format (unsorted). [in] U_new magma_c_matrix* Elements that will be inserted stored in COO format (unsorted). [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_set_approx_thrs ( magma_int_t num_rm, magma_c_matrix * LU, magma_int_t order, float * thrs, magma_queue_t queue )

This routine approximates the threshold for removing num_rm elements.

Parameters
 [in] num_rm magma_int_t Number of Elements that are replaced. [in] LU magma_c_matrix* Current ILU approximation. [in] order magma_int_t Sort goal function: 0 = smallest, 1 = largest. [out] thrs magmaFloatComplex* Size of the num_rm-th smallest element. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_set_thrs_randomselect ( magma_int_t num_rm, magma_c_matrix * LU, magma_int_t order, float * thrs, magma_queue_t queue )

This routine approximates the threshold for removing num_rm elements.

Parameters
 [in] num_rm magma_int_t Number of Elements that are replaced. [in] LU magma_c_matrix* Current ILU approximation. [in] order magma_int_t Sort goal function: 0 = smallest, 1 = largest. [out] thrs float* Size of the num_rm-th smallest element. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_set_thrs_L_scaled ( magma_int_t num_rm, magma_c_matrix * L, magma_c_matrix * U, magma_int_t order, float * thrs, magma_queue_t queue )

This routine approximates the threshold for removing num_rm elements.

It takes into account the scaling with the diagonal.

Parameters
 [in] num_rm magma_int_t Number of Elements that are replaced. [in] L magma_c_matrix* Current L approximation. [in] U magma_c_matrix* Current U approximation. [in] order magma_int_t Sort goal function: 0 = smallest, 1 = largest. [out] thrs float* Size of the num_rm-th smallest element. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_set_thrs_randomselect_approx2 ( magma_int_t num_rm, magma_c_matrix * LU, magma_int_t order, float * thrs, magma_queue_t queue )

This routine approximates the threshold for removing num_rm elements.

Parameters
 [in] num_rm magma_int_t Number of Elements that are replaced. [in] LU magma_c_matrix* Current ILU approximation. [in] order magma_int_t Sort goal function: 0 = smallest, 1 = largest. [out] thrs float* Size of the num_rm-th smallest element. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_set_thrs_randomselect_approx ( magma_int_t num_rm, magma_c_matrix * LU, magma_int_t order, float * thrs, magma_queue_t queue )

This routine approximates the threshold for removing num_rm elements.

Parameters
 [in] num_rm magma_int_t Number of Elements that are replaced. [in] LU magma_c_matrix* Current ILU approximation. [in] order magma_int_t Sort goal function: 0 = smallest, 1 = largest. [out] thrs float* Size of the num_rm-th smallest element. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_set_thrs_randomselect_factors ( magma_int_t num_rm, magma_c_matrix * L, magma_c_matrix * U, magma_int_t order, float * thrs, magma_queue_t queue )

This routine approximates the threshold for removing num_rm elements.

Parameters
 [in] num_rm magma_int_t Number of Elements that are replaced. [in] LU magma_c_matrix* Current ILU approximation. [in] order magma_int_t Sort goal function: 0 = smallest, 1 = largest. [out] thrs float* Size of the num_rm-th smallest element. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_set_exact_thrs ( magma_int_t num_rm, magma_c_matrix * LU, magma_int_t order, magmaFloatComplex * thrs, magma_queue_t queue )

This routine provides the exact threshold for removing num_rm elements.

Parameters
 [in] num_rm magma_int_t Number of Elements that are replaced. [in] LU magma_c_matrix* Current ILU approximation. [in] order magma_int_t Sort goal function: 0 = smallest, 1 = largest. [out] thrs magmaFloatComplex* Size of the num_rm-th smallest element. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_set_approx_thrs_inc ( magma_int_t num_rm, magma_c_matrix * LU, magma_int_t order, magmaFloatComplex * thrs, magma_queue_t queue )

This routine provides the exact threshold for removing num_rm elements.

Parameters
 [in] num_rm magma_int_t Number of Elements that are replaced. [in] LU magma_c_matrix* Current ILU approximation. [in] order magma_int_t Sort goal function: 0 = smallest, 1 = largest. [out] thrs magmaFloatComplex* Size of the num_rm-th smallest element. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_sweep_sync ( magma_c_matrix * A, magma_c_matrix * L, magma_c_matrix * U, magma_queue_t queue )

This function does one synchronized ParILU sweep.

Input and output are different arrays.

Parameters
 [in] A magma_c_matrix* System matrix. [in] L magma_c_matrix* Current approximation for the lower triangular factor The format is sorted CSR. [in] U magma_c_matrix* Current approximation for the upper triangular factor The format is sorted CSC. [out] L_new magma_c_matrix* Current approximation for the lower triangular factor The format is unsorted CSR. [out] U_new magma_c_matrix* Current approximation for the upper triangular factor The format is unsorted CSC. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparilut_align_residuals ( magma_c_matrix L, magma_c_matrix U, magma_c_matrix * Lnew, magma_c_matrix * Unew, magma_queue_t queue )

This function scales the residuals of a lower triangular factor L with the diagonal of U.

The intention is to generate a good initial guess for inserting the elements.

Parameters
 [in] L magma_c_matrix Current approximation for the lower triangular factor The format is sorted CSR. [in] U magma_c_matrix Current approximation for the upper triangular factor The format is sorted CSC. [in] hL magma_c_matrix* Current approximation for the lower triangular factor The format is sorted CSR. [in] hU magma_c_matrix* Current approximation for the upper triangular factor The format is sorted CSC. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cfrobenius ( magma_c_matrix A, magma_c_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!

Parameters
 [in] A magma_c_matrix sparse matrix in CSR [in] B magma_c_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_cnonlinres ( magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_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.

Parameters
 [in] A magma_c_matrix input sparse matrix in CSR [in] L magma_c_matrix input sparse matrix in CSR [in] U magma_c_matrix input sparse matrix in CSR [out] LU magma_c_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_cilures ( magma_c_matrix A, magma_c_matrix L, magma_c_matrix U, magma_c_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.

Parameters
 [in] A magma_c_matrix input sparse matrix in CSR [in] L magma_c_matrix input sparse matrix in CSR [in] U magma_c_matrix input sparse matrix in CSR [out] LU magma_c_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_cicres ( magma_c_matrix A, magma_c_matrix C, magma_c_matrix CT, magma_c_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.

Parameters
 [in] A magma_c_matrix input sparse matrix in CSR [in] C magma_c_matrix input sparse matrix in CSR [in] CT magma_c_matrix input sparse matrix in CSR [in] LU magma_c_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_cinitguess ( magma_c_matrix A, magma_c_matrix * L, magma_c_matrix * U, magma_queue_t queue )

Computes an initial guess for the ParILU/ParIC.

Parameters
 [in] A magma_c_matrix sparse matrix in CSR [out] L magma_c_matrix* sparse matrix in CSR [out] U magma_c_matrix* sparse matrix in CSR [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cinitrecursiveLU ( magma_c_matrix A, magma_c_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.

Parameters
 [in] A magma_c_matrix* sparse matrix in CSR [out] B magma_c_matrix* sparse matrix in CSR [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmLdiagadd ( magma_c_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.

Parameters
 [in,out] L magma_c_matrix* sparse matrix in CSR [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cselect ( magmaFloatComplex * a, magma_int_t size, magma_int_t k, magma_queue_t queue )

An efficient implementation of Blum, Floyd, Pratt, Rivest, and Tarjan's worst-case linear selection algorithm.

Derrick Coetzee, webma.nosp@m.ster.nosp@m.@moon.nosp@m.flar.nosp@m.e.com January 22, 2004 http://moonflare.com/code/select/select.pdf

Parameters
 [in,out] a magmaFloatComplex* array to select from [in] size magma_int_t size of array [in] k magma_int_t k-th smallest element [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cselectrandom ( magmaFloatComplex * a, magma_int_t size, magma_int_t k, magma_queue_t queue )

An efficient implementation of Blum, Floyd, Pratt, Rivest, and Tarjan's worst-case linear selection algorithm.

Derrick Coetzee, webma.nosp@m.ster.nosp@m.@moon.nosp@m.flar.nosp@m.e.com January 22, 2004 http://moonflare.com/code/select/select.pdf

Parameters
 [in,out] a magmaFloatComplex* array to select from [in] size magma_int_t size of array [in] k magma_int_t k-th smallest element [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_csolverinfo ( magma_c_solver_par * solver_par, magma_c_preconditioner * precond_par, magma_queue_t queue )

Prints information about a previously called solver.

Parameters
 [in] solver_par magma_c_solver_par* structure containing all solver information [in,out] precond_par magma_c_preconditioner* structure containing all preconditioner information [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_csolverinfo_free ( magma_c_solver_par * solver_par, magma_c_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.

Parameters
 [in,out] solver_par magma_c_solver_par* structure containing all solver information [in,out] precond_par magma_c_preconditioner* structure containing all preconditioner information [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_csolverinfo_init ( magma_c_solver_par * solver_par, magma_c_preconditioner * precond_par, magma_queue_t queue )

Initializes all solver and preconditioner parameters.

Parameters
 [in,out] solver_par magma_c_solver_par* structure containing all solver information [in,out] precond_par magma_c_preconditioner* structure containing all preconditioner information [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_ceigensolverinfo_init ( magma_c_solver_par * solver_par, magma_queue_t queue )

Initializes space for eigensolvers.

Parameters
 [in,out] solver_par magma_c_solver_par* structure containing all solver information [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_csort ( magmaFloatComplex * x, magma_int_t first, magma_int_t last, magma_queue_t queue )

Sorts an array of values in increasing order.

Parameters
 [in,out] x magmaFloatComplex* 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_cmsort ( magmaFloatComplex * 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.

Parameters
 [in,out] x magmaFloatComplex* 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_cindexsort ( magma_index_t * x, magma_int_t first, magma_int_t last, magma_queue_t queue )

Sorts an array of integers in increasing order.

Parameters
 [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_cindexsortval ( magma_index_t * x, magmaFloatComplex * y, magma_int_t first, magma_int_t last, magma_queue_t queue )

Sorts an array of integers, updates a respective array of values.

Parameters
 [in,out] x magma_index_t* array to sort [in,out] y magmaFloatComplex* 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_cmorderstatistics ( magmaFloatComplex * val, magma_index_t * col, magma_index_t * row, magma_int_t length, magma_int_t k, magma_int_t r, magmaFloatComplex * 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.

Parameters
 [in,out] val magmaFloatComplex* 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 magmaFloatComplex* location of the respective element [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_corderstatistics ( magmaFloatComplex * val, magma_int_t length, magma_int_t k, magma_int_t r, magmaFloatComplex * element, magma_queue_t queue )

Identifies the kth smallest/largest element in an array.

Parameters
 [in,out] val magmaFloatComplex* 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 magmaFloatComplex* location of the respective element [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_corderstatistics_inc ( magmaFloatComplex * val, magma_int_t length, magma_int_t k, magma_int_t inc, magma_int_t r, magmaFloatComplex * element, magma_queue_t queue )

Approximates the k-th smallest element in an array by using order-statistics with step-size inc.

Parameters
 [in,out] val magmaFloatComplex* 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] inc magma_int_t Stepsize in the approximation. [in] r magma_int_t rule how to sort: '1' -> largest, '0' -> smallest [out] element magmaFloatComplex* location of the respective element [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cbitonic_sort ( magma_int_t start, magma_int_t length, magmaFloatComplex * seq, magma_int_t flag, magma_queue_t queue )

Approximates the k-th smallest element in an array by using order-statistics with step-size inc.

Parameters
 [in,out] val magmaFloatComplex* 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] inc magma_int_t Stepsize in the approximation. [in] r magma_int_t rule how to sort: '1' -> largest, '0' -> smallest [out] element magmaFloatComplex* location of the respective element [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cparse_opts ( int argc, char ** argv, magma_copts * opts, int * matrices, magma_queue_t queue )

Parses input options for a solver.

Parameters
 [in] argc int command line input [in] argv char** command line input [in,out] opts magma_copts * 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_cvinit ( magma_c_matrix * x, magma_location_t mem_loc, magma_int_t num_rows, magma_int_t num_cols, magmaFloatComplex values, magma_queue_t queue )

Allocates memory for magma_c_matrix and initializes it with the passed value.

Parameters
 [out] x magma_c_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 magmaFloatComplex entries in vector [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cvinit_rand ( magma_c_matrix * x, magma_location_t mem_loc, magma_int_t num_rows, magma_int_t num_cols, magma_queue_t queue )

Allocates memory for magma_c_matrix and initializes it with random values.

Parameters
 [out] x magma_c_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] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cprint_vector ( magma_c_matrix x, magma_int_t offset, magma_int_t visulen, magma_queue_t queue )

Visualizes part of a vector of type magma_c_matrix.

With input vector x , offset, visulen, the entries offset - (offset + visulen) of x are visualized.

Parameters
 [in] x magma_c_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_cvread ( magma_c_matrix * x, magma_int_t length, char * filename, magma_queue_t queue )

Reads in a float vector of length "length".

Parameters
 [out] x magma_c_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_cvspread ( magma_c_matrix * x, const char * filename, magma_queue_t queue )

Reads in a sparse vector-block stored in COO format.

Parameters
 [out] x magma_c_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_cwrite_vector ( magma_c_matrix A, const char * filename, magma_queue_t queue )

Writes a vector to a file.

Parameters
 [in] A magma_c_matrix matrix to write out [in] filename const char* output-filname of the mtx matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cvset ( magma_int_t m, magma_int_t n, magmaFloatComplex * val, magma_c_matrix * v, magma_queue_t queue )

Passes a vector to MAGMA.

Parameters
 [in] m magma_int_t number of rows [in] n magma_int_t number of columns [in] val magmaFloatComplex* array containing vector entries [out] v magma_c_matrix* magma vector [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cvget ( magma_c_matrix v, magma_int_t * m, magma_int_t * n, magmaFloatComplex ** val, magma_queue_t queue )

Passes a MAGMA vector back.

Parameters
 [in] v magma_c_matrix magma vector [out] m magma_int_t number of rows [out] n magma_int_t number of columns [out] val magmaFloatComplex* array containing vector entries [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cvset_dev ( magma_int_t m, magma_int_t n, magmaFloatComplex_ptr val, magma_c_matrix * v, magma_queue_t queue )

Passes a vector to MAGMA (located on DEV).

Parameters
 [in] m magma_int_t number of rows [in] n magma_int_t number of columns [in] val magmaFloatComplex_ptr array containing vector entries [out] v magma_c_matrix* magma vector [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cvget_dev ( magma_c_matrix v, magma_int_t * m, magma_int_t * n, magmaFloatComplex_ptr * val, magma_queue_t queue )

Passes a MAGMA vector back (located on DEV).

Parameters
 [in] v magma_c_matrix magma vector [out] m magma_int_t number of rows [out] n magma_int_t number of columns [out] val magmaFloatComplex_ptr array containing vector entries [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cvtranspose ( magma_c_matrix x, magma_c_matrix * y, magma_queue_t queue )

Transposes a vector from col to row major and vice versa.

Parameters
 [in] x magma_c_matrix input vector [out] y magma_c_matrix* output vector [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmbackinsert_batched_gpu ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix * M, magma_index_t * sizes, magma_index_t * locations, magmaFloatComplex * trisystems, magmaFloatComplex * rhs, magma_queue_t queue )

Inserts the values into the preconditioner matrix.

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in,out] M magma_c_matrix* SPAI preconditioner CSR col-major [out] sizes magma_int_t* Number of Elements that are replaced. [out] locations magma_int_t* Array indicating the locations. [out] trisystems magmaFloatComplex* trisystems [out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cisaigenerator_16_gpu ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix * M, magma_index_t * sizes, magma_index_t * locations, magmaFloatComplex * trisystems, magmaFloatComplex * rhs, magma_queue_t queue )

This routine is designet to combine all kernels into one.

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in] L magma_c_matrix triangular factor for which the ISAI matrix is computed. Col-Major CSR storage. [in,out] M magma_c_matrix* SPAI preconditioner CSR col-major [out] sizes magma_int_t* Number of Elements that are replaced. [out] locations magma_int_t* Array indicating the locations. [out] trisystems magmaFloatComplex* trisystems [out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cisaigenerator_32_gpu ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix * M, magma_index_t * sizes, magma_index_t * locations, magmaFloatComplex * trisystems, magmaFloatComplex * rhs, magma_queue_t queue )

This routine is designet to combine all kernels into one.

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in] L magma_c_matrix triangular factor for which the ISAI matrix is computed. Col-Major CSR storage. [in,out] M magma_c_matrix* SPAI preconditioner CSR col-major [out] sizes magma_int_t* Number of Elements that are replaced. [out] locations magma_int_t* Array indicating the locations. [out] trisystems magmaFloatComplex* trisystems [out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cisaigenerator_8_gpu ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix * M, magma_index_t * sizes, magma_index_t * locations, magmaFloatComplex * trisystems, magmaFloatComplex * rhs, magma_queue_t queue )

This routine is designet to combine all kernels into one.

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in] L magma_c_matrix triangular factor for which the ISAI matrix is computed. Col-Major CSR storage. [in,out] M magma_c_matrix* SPAI preconditioner CSR col-major [out] sizes magma_int_t* Number of Elements that are replaced. [out] locations magma_int_t* Array indicating the locations. [out] trisystems magmaFloatComplex* trisystems [out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cisai_generator_regs ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix * M, magma_queue_t queue )

This routine is designet to combine all kernels into one.

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in] L magma_c_matrix triangular factor for which the ISAI matrix is computed. Col-Major CSR storage. [in,out] M magma_c_matrix* SPAI preconditioner CSR col-major [out] sizes magma_int_t* Number of Elements that are replaced. [out] locations magma_int_t* Array indicating the locations. [out] trisystems magmaFloatComplex* trisystems [out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cgeisai_maxblock ( magma_c_matrix L, magma_c_matrix * MT, magma_queue_t queue )

This routine maximizes the pattern for the ISAI preconditioner.

Precisely, it computes L, L^2, L^3, L^4, L^5 and then selects the columns of M_L such that the nonzer-per-column are the lower max than the implementation-specific limit (32).

The input is the original matrix (row-major) The output is already col-major.

Parameters
 [in,out] L magma_c_matrix Incomplete factor. [in,out] MT magma_c_matrix* SPAI preconditioner structure, CSR col-major. [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmtrisolve_batched_gpu ( magma_uplo_t uplotype, magma_trans_t transtype, magma_diag_t diagtype, magma_c_matrix L, magma_c_matrix LC, magma_index_t * sizes, magma_index_t * locations, magmaFloatComplex * trisystems, magmaFloatComplex * rhs, magma_queue_t queue )

Does all triangular solves.

Parameters
 [in] uplotype magma_uplo_t lower or upper triangular [in] transtype magma_trans_t possibility for transposed matrix [in] diagtype magma_diag_t unit diagonal or not [in] L magma_c_matrix Matrix in CSR format [in] LC magma_c_matrix same matrix, also CSR, but col-major [out] sizes magma_int_t* Number of Elements that are replaced. [out] locations magma_int_t* Array indicating the locations. [out] trisystems magmaFloatComplex* trisystems [out] rhs magmaFloatComplex* right-hand sides [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmisai_blockstruct_gpu ( magma_int_t n, magma_int_t bs, magma_int_t offs, magma_uplo_t uplotype, magma_c_matrix * A, magma_queue_t queue )

Generates a block-diagonal sparsity pattern with block-size bs on the GPU.

Parameters
 [in] n magma_int_t Size of the matrix. [in] bs magma_int_t Size of the diagonal blocks. [in] offs magma_int_t Size of the first diagonal block. [in] uplotype magma_uplo_t lower or upper triangular [in,out] A magma_c_matrix* Generated sparsity pattern matrix. [in] queue magma_queue_t Queue to execute in.
 void magmablas_clag2z_sparse ( magma_int_t M, magma_int_t N, const magmaFloatComplex * SA, magma_int_t ldsa, magmaDoubleComplex * A, magma_int_t lda, magma_queue_t queue, magma_int_t * info )

CLAG2Z converts a COMPLEX matrix SA to a COMPLEX_16 matrix A.

RMAX is the overflow for the COMPLEX arithmetic. CLAG2Z checks that all the entries of A are between -RMAX and RMAX. If not the convertion is aborted and a flag is raised.

Parameters
 [in] M INTEGER The number of lines of the matrix A. M >= 0. [in] N INTEGER The number of columns of the matrix A. N >= 0. [in] SA COMPLEX array, dimension (LDSA,N) On entry, the M-by-N coefficient matrix SA. [in] ldsa INTEGER The leading dimension of the array A. LDA >= max(1,M). [out] A COMPLEX_16 array, dimension (LDA,N) On exit, if INFO=0, the M-by-N coefficient matrix A; if INFO>0, the content of A is unspecified. [in] lda INTEGER The leading dimension of the array SA. LDSA >= max(1,M). [in] queue magma_queue_t Queue to execute in. [out] info INTEGER = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value = 1: an entry of the matrix A is greater than the COMPLEX overflow threshold, in this case, the content of SA in exit is unspecified.
 magma_int_t magma_clobpcg_res ( magma_int_t num_rows, magma_int_t num_vecs, magmaFloat_ptr evalues, magmaFloatComplex_ptr X, magmaFloatComplex_ptr R, magmaFloat_ptr res, magma_queue_t queue )

This routine computes for Block-LOBPCG, the set of residuals.

                    R = Ax - x evalues


It replaces: for(int i=0; i < n; i++) { magma_caxpy(m, MAGMA_C_MAKE(-evalues[i],0),blockX+i*m,1,blockR+i*m,1); } The memory layout of x is:

/ 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] /

Parameters
 [in] num_rows magma_int_t number of rows [in] num_vecs magma_int_t number of vectors [in] evalues magmaFloat_ptr array of eigenvalues/approximations [in] X magmaFloatComplex_ptr block of eigenvector approximations [in] R magmaFloatComplex_ptr block of residuals [in] res magmaFloat_ptr array of residuals [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_clobpcg_shift ( magma_int_t num_rows, magma_int_t num_vecs, magma_int_t shift, magmaFloatComplex_ptr x, magma_queue_t queue )

For a Block-LOBPCG, the set of residuals (entries consecutive in memory) shrinks and the vectors are shifted in case shift residuals drop below threshold.

The memory layout of x is:

/ x1[0] x2[0] x3[0] \ | x1[1] x2[1] x3[1] | x = | x1[2] x2[2] x3[2] | = x1[0] x2[0] x3[0] x1[1] x2[1] x3[1] x1[2] . | x1[3] x2[3] x3[3] | \ x1[4] x2[4] x3[4] /

Parameters
 [in] num_rows magma_int_t number of rows [in] num_vecs magma_int_t number of vectors [in] shift magma_int_t shift number [in,out] x magmaFloatComplex_ptr input/output vector x [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_ccopyscale ( magma_int_t n, magma_int_t k, magmaFloatComplex_ptr r, magmaFloatComplex_ptr v, magmaFloatComplex_ptr skp, magma_queue_t queue )

Computes the correction term of the pipelined GMRES according to P.

Ghysels and scales and copies the new search direction

Returns the vector v = r/ ( skp[k] - (sum_i=1^k skp[i]^2) ) .

Parameters
[in]nint length of v_i
[in]kint

# skp entries v_i^T * r ( without r )

Parameters
 [in] r magmaFloatComplex_ptr vector of length n [in] v magmaFloatComplex_ptr vector of length n [in] skp magmaFloatComplex_ptr array of parameters [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cdiagcheck ( magma_c_matrix dA, magma_queue_t queue )

This routine checks for a CSR matrix whether there exists a zero on the diagonal.

This can be the diagonal entry missing or an explicit zero.

Parameters
 [in] dA magma_c_matrix matrix in CSR format [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_vector_clag2z ( magma_c_vector x, magma_z_matrix * y, magma_queue_t queue )

convertes magma_c_vector from C to Z

Parameters
 [in] x magma_c_vector input vector descriptor [out] y magma_z_matrix* output vector descriptor [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_sparse_matrix_clag2z ( magma_c_sparse_matrix A, magma_z_matrix * B, magma_queue_t queue )

convertes magma_c_sparse_matrix from C to Z

Parameters
 A magma_c_sparse_matrix input matrix descriptor B magma_z_matrix* output matrix descriptor [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmconjugate ( magma_c_matrix * A, magma_queue_t queue )

This function conjugates a matrix.

For a real matrix, no value is changed.

Parameters
 [in,out] A magma_c_matrix* input/output matrix [in] queue magma_queue_t Queue to execute in.
 magma_int_t magma_cmcsrcompressor_gpu ( magma_c_matrix * A, magma_queue_t queue )

Removes zeros in a CSR matrix.

This is a GPU implementation of the CSR compressor.

Parameters
 [in,out] A magma_c_matrix* input/output matrix [in] queue magma_queue_t Queue to execute in.