MAGMA  1.6.1
Matrix Algebra for GPU and Multicore Architectures
 All Classes Files Functions Friends Groups Pages
double precision

Functions

magma_int_t magma_dresidual (magma_d_sparse_matrix A, magma_d_vector b, magma_d_vector x, double *res, magma_queue_t queue)
 Computes the residual ||b-Ax|| for a solution approximation x. More...
 
magma_int_t magma_d_precond (magma_d_sparse_matrix A, magma_d_vector b, magma_d_vector *x, magma_d_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_d_precondsetup (magma_d_sparse_matrix A, magma_d_vector b, magma_d_preconditioner *precond, magma_queue_t queue)
 For a given input matrix A and vectors x, y and the preconditioner parameters, the respective preconditioner is preprocessed. More...
 
magma_int_t magma_d_applyprecond (magma_d_sparse_matrix A, magma_d_vector b, magma_d_vector *x, magma_d_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_d_applyprecond_left (magma_d_sparse_matrix A, magma_d_vector b, magma_d_vector *x, magma_d_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_d_applyprecond_right (magma_d_sparse_matrix A, magma_d_vector b, magma_d_vector *x, magma_d_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_d_solver (magma_d_sparse_matrix A, magma_d_vector b, magma_d_vector *x, magma_dopts *zopts, magma_queue_t queue)
 ALlows the user to choose a solver. More...
 
magma_int_t magma_dapplycustomprecond_l (magma_d_vector b, magma_d_vector *x, magma_d_preconditioner *precond, magma_queue_t queue)
 This is an interface to the left solve for any custom preconditioner. More...
 
magma_int_t magma_dapplycustomprecond_r (magma_d_vector b, magma_d_vector *x, magma_d_preconditioner *precond, magma_queue_t queue)
 This is an interface to the right solve for any custom preconditioner. More...
 
magma_int_t magma_d_vfree (magma_d_vector *x, magma_queue_t queue)
 Free the memory of a magma_d_vector. More...
 
magma_int_t magma_d_mfree (magma_d_sparse_matrix *A, magma_queue_t queue)
 Free the memory of a magma_d_sparse_matrix. More...
 
magma_int_t magma_d_vinit (magma_d_vector *x, magma_location_t mem_loc, magma_int_t num_rows, double values, magma_queue_t queue)
 Initialize a magma_d_vector. More...
 
magma_int_t magma_drowentries (magma_d_sparse_matrix *A, magma_queue_t queue)
 Checks the maximal number of nonzeros in a row of matrix A. More...
 
magma_int_t magma_ddiameter (magma_d_sparse_matrix *A, magma_queue_t queue)
 Computes the diameter of a sparse matrix and stores the value in diameter. More...
 
magma_int_t magma_d_vvisu (magma_d_vector x, magma_int_t offset, magma_int_t visulen, magma_queue_t queue)
 Visualizes part of a vector of type magma_d_vector. More...
 
magma_int_t magma_d_vread (magma_d_vector *x, magma_int_t length, char *filename, magma_queue_t queue)
 Reads in a double vector of length "length". More...
 
magma_int_t magma_d_vspread (magma_d_vector *x, const char *filename, magma_queue_t queue)
 Reads in a sparse vector-block stored in COO format. More...
 
magma_int_t magma_d_csr_compressor (double **val, magma_index_t **row, magma_index_t **col, double **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_d_mconvert (magma_d_sparse_matrix A, magma_d_sparse_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_dmcsrcompressor (magma_d_sparse_matrix *A, magma_queue_t queue)
 Removes zeros in a CSR matrix. More...
 
magma_int_t magma_dcsrset (magma_int_t m, magma_int_t n, magma_index_t *row, magma_index_t *col, double *val, magma_d_sparse_matrix *A, magma_queue_t queue)
 Passes a CSR matrix to MAGMA. More...
 
magma_int_t magma_dcsrget (magma_d_sparse_matrix A, magma_int_t *m, magma_int_t *n, magma_index_t **row, magma_index_t **col, double **val, magma_queue_t queue)
 Passes a MAGMA matrix to CSR structure. More...
 
magma_int_t magma_dcsrset_gpu (magma_int_t m, magma_int_t n, magmaIndex_ptr row, magmaIndex_ptr col, magmaDouble_ptr val, magma_d_sparse_matrix *A, magma_queue_t queue)
 Passes a CSR matrix to MAGMA (located on DEV). More...
 
magma_int_t magma_dcsrget_gpu (magma_d_sparse_matrix A, magma_int_t *m, magma_int_t *n, magmaIndex_ptr *row, magmaIndex_ptr *col, magmaDouble_ptr *val, magma_queue_t queue)
 Passes a MAGMA matrix to CSR structure (located on DEV). More...
 
magma_int_t magma_dmdiff (magma_d_sparse_matrix A, magma_d_sparse_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_dmgenerator (magma_int_t n, magma_int_t offdiags, magma_index_t *diag_offset, double *diag_vals, magma_d_sparse_matrix *A, magma_queue_t queue)
 Generate a symmetric n x n CSR matrix for a stencil. More...
 
magma_int_t magma_dm_27stencil (magma_int_t n, magma_d_sparse_matrix *A, magma_queue_t queue)
 Generate a 27-point stencil for a 3D FD discretization. More...
 
magma_int_t magma_dm_5stencil (magma_int_t n, magma_d_sparse_matrix *A, magma_queue_t queue)
 Generate a 5-point stencil for a 2D FD discretization. More...
 
magma_int_t read_d_csr_from_binary (magma_int_t *n_row, magma_int_t *n_col, magma_int_t *nnz, double **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 binary and converts it into CSR format. More...
 
magma_int_t read_d_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, double **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 write_d_csr_mtx (magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, double **val, magma_index_t **row, magma_index_t **col, 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 print_d_csr_mtx (magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, double **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 print_d_csr (magma_int_t n_row, magma_int_t n_col, magma_int_t nnz, double **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_d_mvisu (magma_d_sparse_matrix A, magma_queue_t queue)
 Prints a sparse matrix in CSR format. More...
 
magma_int_t magma_d_csr_mtx (magma_d_sparse_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_d_csr_mtxsymm (magma_d_sparse_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_dmlumerge (magma_d_sparse_matrix L, magma_d_sparse_matrix U, magma_d_sparse_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_dmscale (magma_d_sparse_matrix *A, magma_scale_t scaling, magma_queue_t queue)
 Scales a matrix. More...
 
magma_int_t magma_dmdiagadd (magma_d_sparse_matrix *A, double add, magma_queue_t queue)
 Adds a multiple of the Identity matrix to a matrix: A = A+add * I. More...
 
magma_int_t magma_d_mtransfer (magma_d_sparse_matrix A, magma_d_sparse_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 d_transpose_csr (magma_int_t n_rows, magma_int_t n_cols, magma_int_t nnz, double *val, magma_index_t *row, magma_index_t *col, magma_int_t *new_n_rows, magma_int_t *new_n_cols, magma_int_t *new_nnz, double **new_val, magma_index_t **new_row, magma_index_t **new_col, magma_queue_t queue)
 Transposes a matrix stored in CSR format. More...
 
magma_int_t magma_d_mtranspose (magma_d_sparse_matrix A, magma_d_sparse_matrix *B, magma_queue_t queue)
 Interface to cuSPARSE transpose. More...
 
magma_int_t magma_d_cucsrtranspose (magma_d_sparse_matrix A, magma_d_sparse_matrix *B, magma_queue_t queue)
 Helper function to transpose CSR matrix. More...
 
magma_int_t magma_dsolverinfo (magma_d_solver_par *solver_par, magma_d_preconditioner *precond_par, magma_queue_t queue)
 Prints information about a previously called solver. More...
 
magma_int_t magma_dsolverinfo_free (magma_d_solver_par *solver_par, magma_d_preconditioner *precond_par, magma_queue_t queue)
 Frees any memory assocoiated with the verbose mode of solver_par. More...
 
magma_int_t magma_dsolverinfo_init (magma_d_solver_par *solver_par, magma_d_preconditioner *precond_par, magma_queue_t queue)
 Initializes all solver and preconditioner parameters. More...
 
magma_int_t magma_deigensolverinfo_init (magma_d_solver_par *solver_par, magma_queue_t queue)
 Initializes space for eigensolvers. More...
 
magma_int_t magma_dparse_opts (int argc, char **argv, magma_dopts *opts, int *matrices, magma_queue_t queue)
 Parses input options for a solver. More...
 
magma_int_t magma_dvset (magma_int_t m, magma_int_t n, double *val, magma_d_vector *v, magma_queue_t queue)
 Passes a vector to MAGMA. More...
 
magma_int_t magma_dvget (magma_d_vector v, magma_int_t *m, magma_int_t *n, double **val, magma_queue_t queue)
 Passes a MAGMA vector back. More...
 
magma_int_t magma_dvset_dev (magma_int_t m, magma_int_t n, magmaDouble_ptr val, magma_d_vector *v, magma_queue_t queue)
 Passes a vector to MAGMA (located on DEV). More...
 
magma_int_t magma_dvget_dev (magma_d_vector v, magma_int_t *m, magma_int_t *n, magmaDouble_ptr *val, magma_queue_t queue)
 Passes a MAGMA vector back (located on DEV). More...
 
magma_int_t magma_d_vtransfer (magma_d_vector x, magma_d_vector *y, magma_location_t src, magma_location_t dst, magma_queue_t queue)
 Copies a vector from memory location src to memory location dst. More...
 
magma_int_t magma_dvtranspose (magma_d_vector x, magma_d_vector *y, magma_queue_t queue)
 Transposes a vector from col to row major and vice versa. More...
 
magma_int_t magma_dlobpcg_res (magma_int_t num_rows, magma_int_t num_vecs, magmaDouble_ptr evalues, magmaDouble_ptr X, magmaDouble_ptr R, magmaDouble_ptr res, magma_queue_t queue)
 This routine computes for Block-LOBPCG, the set of residuals. More...
 
magma_int_t magma_dlobpcg_shift (magma_int_t num_rows, magma_int_t num_vecs, magma_int_t shift, magmaDouble_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_dcopyscale (int n, int k, magmaDouble_ptr r, magmaDouble_ptr v, magmaDouble_ptr skp, magma_queue_t queue)
 Computes the correction term of the pipelined GMRES according to P. More...
 
magma_int_t magma_d_spmv_shift (double alpha, magma_d_sparse_matrix A, double lambda, magma_d_vector x, double beta, magma_int_t offset, magma_int_t blocksize, magma_index_t *add_rows, magma_d_vector y, magma_queue_t queue)
 For a given input matrix A and vectors x, y and scalars alpha, beta the wrapper determines the suitable SpMV computing y = alpha * ( A - lambda I ) * x + beta * y. More...
 
magma_int_t magma_dmcsrcompressor_gpu (magma_d_sparse_matrix *A, magma_queue_t queue)
 Removes zeros in a CSR matrix. More...
 

Detailed Description

Function Documentation

magma_int_t d_transpose_csr ( magma_int_t  n_rows,
magma_int_t  n_cols,
magma_int_t  nnz,
double *  val,
magma_index_t *  row,
magma_index_t *  col,
magma_int_t *  new_n_rows,
magma_int_t *  new_n_cols,
magma_int_t *  new_nnz,
double **  new_val,
magma_index_t **  new_row,
magma_index_t **  new_col,
magma_queue_t  queue 
)

Transposes a matrix stored in CSR format.

Parameters
[in]n_rowsmagma_int_t number of rows in input matrix
[in]n_colsmagma_int_t number of columns in input matrix
[in]nnzmagma_int_t number of nonzeros in input matrix
[in]valdouble* value array of input matrix
[in]rowmagma_index_t* row pointer of input matrix
[in]colmagma_index_t* column indices of input matrix
[in]new_n_rowsmagma_index_t* number of rows in transposed matrix
[in]new_n_colsmagma_index_t* number of columns in transposed matrix
[in]new_nnzmagma_index_t* number of nonzeros in transposed matrix
[in]new_valdouble** value array of transposed matrix
[in]new_rowmagma_index_t** row pointer of transposed matrix
[in]new_colmagma_index_t** column indices of transposed matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_applyprecond ( magma_d_sparse_matrix  A,
magma_d_vector  b,
magma_d_vector *  x,
magma_d_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]Amagma_d_sparse_matrix sparse matrix A
[in]bmagma_d_vector input vector b
[in,out]xmagma_d_vector* output vector x
[in]precondmagma_d_preconditioner preconditioner
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_applyprecond_left ( magma_d_sparse_matrix  A,
magma_d_vector  b,
magma_d_vector *  x,
magma_d_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]Amagma_d_sparse_matrix sparse matrix A
[in]bmagma_d_vector input vector b
[in,out]xmagma_d_vector* output vector x
[in]precondmagma_d_preconditioner preconditioner
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_applyprecond_right ( magma_d_sparse_matrix  A,
magma_d_vector  b,
magma_d_vector *  x,
magma_d_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]Amagma_d_sparse_matrix sparse matrix A
[in]bmagma_d_vector input vector b
[in,out]xmagma_d_vector* output vector x
[in]precondmagma_d_preconditioner preconditioner
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_csr_compressor ( double **  val,
magma_index_t **  row,
magma_index_t **  col,
double **  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]valdouble** input val pointer to compress
[in]rowmagma_int_t** input row pointer to modify
[in]colmagma_int_t** input col pointer to compress
[in]valndouble** output val pointer
[out]rownmagma_int_t** output row pointer
[out]colnmagma_int_t** output col pointer
[out]nmagma_int_t* number of rows in matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_csr_mtx ( magma_d_sparse_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]Amagma_d_sparse_matrix* matrix in magma sparse matrix format
[in]filenameconst char* filname of the mtx matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_csr_mtxsymm ( magma_d_sparse_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]Amagma_d_sparse_matrix* matrix in magma sparse matrix format
[in]filenameconst char* filname of the mtx matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_cucsrtranspose ( magma_d_sparse_matrix  A,
magma_d_sparse_matrix *  B,
magma_queue_t  queue 
)

Helper function to transpose CSR matrix.

Using the CUSPARSE CSR2CSC function.

Parameters
[in]Amagma_d_sparse_matrix input matrix (CSR)
[out]Bmagma_d_sparse_matrix* output matrix (CSR)
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_mconvert ( magma_d_sparse_matrix  A,
magma_d_sparse_matrix *  B,
magma_storage_t  old_format,
magma_storage_t  new_format,
magma_queue_t  queue 
)

Converter between different sparse storage formats.

Parameters
[in]Amagma_d_sparse_matrix sparse matrix A
[out]Bmagma_d_sparse_matrix* copy of A in new format
[in]old_formatmagma_storage_t original storage format
[in]new_formatmagma_storage_t new storage format
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_mfree ( magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

Free the memory of a magma_d_sparse_matrix.

Parameters
[in,out]Amagma_d_sparse_matrix* matrix to free
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_mtransfer ( magma_d_sparse_matrix  A,
magma_d_sparse_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]Amagma_d_sparse_matrix sparse matrix A
[out]Bmagma_d_sparse_matrix* copy of A
[in]srcmagma_location_t original location A
[in]dstmagma_location_t location of the copy of A
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_mtranspose ( magma_d_sparse_matrix  A,
magma_d_sparse_matrix *  B,
magma_queue_t  queue 
)

Interface to cuSPARSE transpose.

Parameters
[in]Amagma_d_sparse_matrix input matrix (CSR)
[out]Bmagma_d_sparse_matrix* output matrix (CSR)
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_mvisu ( magma_d_sparse_matrix  A,
magma_queue_t  queue 
)

Prints a sparse matrix in CSR format.

Parameters
[in]Amagma_d_sparse_matrix sparse matrix in Magma_CSR format
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_precond ( magma_d_sparse_matrix  A,
magma_d_vector  b,
magma_d_vector *  x,
magma_d_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]Amagma_d_sparse_matrix sparse matrix A
[in]bmagma_d_vector input vector b
[in]xmagma_d_vector* output vector x
[in,out]precondmagma_d_preconditioner preconditioner
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_precondsetup ( magma_d_sparse_matrix  A,
magma_d_vector  b,
magma_d_preconditioner *  precond,
magma_queue_t  queue 
)

For a given input matrix A 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]Amagma_d_sparse_matrix sparse matrix A
[in]bmagma_d_vector input vector y
[in,out]precondmagma_d_preconditioner preconditioner
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_solver ( magma_d_sparse_matrix  A,
magma_d_vector  b,
magma_d_vector *  x,
magma_dopts *  zopts,
magma_queue_t  queue 
)

ALlows the user to choose a solver.

Parameters
[in]Amagma_d_sparse_matrix sparse matrix A
[in]bmagma_d_vector input vector b
[in]xmagma_d_vector* output vector x
[in]zoptsmagma_dopts options for solver and preconditioner
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_spmv_shift ( double  alpha,
magma_d_sparse_matrix  A,
double  lambda,
magma_d_vector  x,
double  beta,
magma_int_t  offset,
magma_int_t  blocksize,
magma_index_t *  add_rows,
magma_d_vector  y,
magma_queue_t  queue 
)

For a given input matrix A and vectors x, y and scalars alpha, beta the wrapper determines the suitable SpMV computing y = alpha * ( A - lambda I ) * x + beta * y.

Parameters
alphadouble scalar alpha
Amagma_d_sparse_matrix sparse matrix A
lambdadouble scalar lambda
xmagma_d_vector input vector x
betadouble scalar beta
offsetmagma_int_t in case not the main diagonal is scaled
blocksizemagma_int_t in case of processing multiple vectors
add_rowsmagma_int_t* in case the matrixpowerskernel is used
ymagma_d_vector output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_vfree ( magma_d_vector *  x,
magma_queue_t  queue 
)

Free the memory of a magma_d_vector.

Parameters
i,out]x magma_d_vector* vector to free
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_vinit ( magma_d_vector *  x,
magma_location_t  mem_loc,
magma_int_t  num_rows,
double  values,
magma_queue_t  queue 
)

Initialize a magma_d_vector.

Parameters
[out]xmagma_d_vector* vector to initialize
[in]mem_locmagma_location_t memory for vector
[in]num_rowsmagma_int_t desired length of vector
[in]valuesdouble entries in vector
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_vread ( magma_d_vector *  x,
magma_int_t  length,
char *  filename,
magma_queue_t  queue 
)

Reads in a double vector of length "length".

Parameters
[out]xmagma_d_vector * vector to read in
[in]lengthmagma_int_t length of vector
[in]filenamechar* file where vector is stored
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_vspread ( magma_d_vector *  x,
const char *  filename,
magma_queue_t  queue 
)

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

Parameters
[out]xmagma_d_vector * vector to read in
[in]filenamechar* file where vector is stored
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_vtransfer ( magma_d_vector  x,
magma_d_vector *  y,
magma_location_t  src,
magma_location_t  dst,
magma_queue_t  queue 
)

Copies a vector from memory location src to memory location dst.

Parameters
[in]xmagma_d_vector vector x
[out]ymagma_d_vector* copy of x
[in]srcmagma_location_t original location x
[in]dstmagma_location_t location of the copy of x
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_d_vvisu ( magma_d_vector  x,
magma_int_t  offset,
magma_int_t  visulen,
magma_queue_t  queue 
)

Visualizes part of a vector of type magma_d_vector.

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

Parameters
[in]xmagma_d_vector vector to visualize
[in]offsetmagma_int_t start inex of visualization
[in]visulenmagma_int_t number of entries to visualize
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dapplycustomprecond_l ( magma_d_vector  b,
magma_d_vector *  x,
magma_d_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]bmagma_d_vector RHS
[in,out]xmagma_d_vector* vector to precondition
[in,out]precondmagma_d_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dapplycustomprecond_r ( magma_d_vector  b,
magma_d_vector *  x,
magma_d_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]bmagma_d_vector RHS
[in,out]xmagma_d_vector* vector to precondition
[in,out]precondmagma_d_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dcopyscale ( int  n,
int  k,
magmaDouble_ptr  r,
magmaDouble_ptr  v,
magmaDouble_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]rmagmaDouble_ptr vector of length n
[in]vmagmaDouble_ptr vector of length n
[in]skpmagmaDouble_ptr array of parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dcsrget ( magma_d_sparse_matrix  A,
magma_int_t *  m,
magma_int_t *  n,
magma_index_t **  row,
magma_index_t **  col,
double **  val,
magma_queue_t  queue 
)

Passes a MAGMA matrix to CSR structure.

Parameters
[in]Amagma_d_sparse_matrix magma sparse matrix in CSR format
[out]mmagma_int_t number of rows
[out]nmagma_int_t number of columns
[out]rowmagma_index_t* row pointer
[out]colmagma_index_t* column indices
[out]valdouble* array containing matrix entries
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dcsrget_gpu ( magma_d_sparse_matrix  A,
magma_int_t *  m,
magma_int_t *  n,
magmaIndex_ptr *  row,
magmaIndex_ptr *  col,
magmaDouble_ptr *  val,
magma_queue_t  queue 
)

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

Parameters
[in]Amagma_d_sparse_matrix magma sparse matrix in CSR format
[out]mmagma_int_t number of rows
[out]nmagma_int_t number of columns
[out]rowmagmaIndex_ptr row pointer
[out]colmagmaIndex_ptr column indices
[out]valmagmaDouble_ptr array containing matrix entries
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dcsrset ( magma_int_t  m,
magma_int_t  n,
magma_index_t *  row,
magma_index_t *  col,
double *  val,
magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

Passes a CSR matrix to MAGMA.

Parameters
[in]mmagma_int_t number of rows
[in]nmagma_int_t number of columns
[in]rowmagma_index_t* row pointer
[in]colmagma_index_t* column indices
[in]valdouble* array containing matrix entries
[out]Amagma_d_sparse_matrix* matrix in magma sparse matrix format
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dcsrset_gpu ( magma_int_t  m,
magma_int_t  n,
magmaIndex_ptr  row,
magmaIndex_ptr  col,
magmaDouble_ptr  val,
magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

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

Parameters
[in]mmagma_int_t number of rows
[in]nmagma_int_t number of columns
[in]rowmagmaIndex_ptr row pointer
[in]colmagmaIndex_ptr column indices
[in]valmagmaDouble_ptr array containing matrix entries
[out]Amagma_d_sparse_matrix* matrix in magma sparse matrix format
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_ddiameter ( magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

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

Parameters
[in,out]Amagma_d_sparse_matrix* sparse matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_deigensolverinfo_init ( magma_d_solver_par *  solver_par,
magma_queue_t  queue 
)

Initializes space for eigensolvers.

Parameters
[in,out]solver_parmagma_d_solver_par* structure containing all solver information
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dlobpcg_res ( magma_int_t  num_rows,
magma_int_t  num_vecs,
magmaDouble_ptr  evalues,
magmaDouble_ptr  X,
magmaDouble_ptr  R,
magmaDouble_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_daxpy(m, MAGMA_D_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_rowsmagma_int_t number of rows
[in]num_vecsmagma_int_t number of vectors
[in]evaluesmagmaDouble_ptr array of eigenvalues/approximations
[in]XmagmaDouble_ptr block of eigenvector approximations
[in]RmagmaDouble_ptr block of residuals
[in]resmagmaDouble_ptr array of residuals
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dlobpcg_shift ( magma_int_t  num_rows,
magma_int_t  num_vecs,
magma_int_t  shift,
magmaDouble_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_rowsmagma_int_t number of rows
[in]num_vecsmagma_int_t number of vectors
[in]shiftmagma_int_t shift number
in/out]x magmaDouble_ptr input/output vector x
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dm_27stencil ( magma_int_t  n,
magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

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

Parameters
[in]nmagma_int_t number of rows
[out]Amagma_d_sparse_matrix* matrix to generate
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dm_5stencil ( magma_int_t  n,
magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

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

Parameters
[in]nmagma_int_t number of rows
[out]Amagma_d_sparse_matrix* matrix to generate
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmcsrcompressor ( magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

Removes zeros in a CSR matrix.

Parameters
[in,out]Amagma_d_sparse_matrix* input/output matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmcsrcompressor_gpu ( magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

Removes zeros in a CSR matrix.

This is a GPU implementation of the CSR compressor.

Parameters
Amagma_d_sparse_matrix* input/output matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmdiagadd ( magma_d_sparse_matrix *  A,
double  add,
magma_queue_t  queue 
)

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

Parameters
[in,out]Amagma_d_sparse_matrix* input/output matrix
[in]adddouble scaling for the identity matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmdiff ( magma_d_sparse_matrix  A,
magma_d_sparse_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]Amagma_d_sparse_matrix sparse matrix in CSR
[in]Bmagma_d_sparse_matrix sparse matrix in CSR
[out]resreal_Double_t* residual
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmgenerator ( magma_int_t  n,
magma_int_t  offdiags,
magma_index_t *  diag_offset,
double *  diag_vals,
magma_d_sparse_matrix *  A,
magma_queue_t  queue 
)

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

Parameters
[in]nmagma_int_t number of rows
[in]offdiagsmagma_int_t number of offdiagonals
[in]diag_offsetmagma_int_t* array containing the offsets
                            (length offsets+1)
[in]diag_valsdouble* array containing the values
                            (length offsets+1)
[out]Amagma_d_sparse_matrix* matrix to generate
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmlumerge ( magma_d_sparse_matrix  L,
magma_d_sparse_matrix  U,
magma_d_sparse_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]Lmagma_d_sparse_matrix input strictly lower triangular matrix L
[in]Umagma_d_sparse_matrix input upper triangular matrix U
[out]Amagma_d_sparse_matrix* output matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmscale ( magma_d_sparse_matrix *  A,
magma_scale_t  scaling,
magma_queue_t  queue 
)

Scales a matrix.

Parameters
[in,out]Amagma_d_sparse_matrix* input/output matrix
[in]scalingmagma_scale_t scaling type (unit rownorm / unit diagonal)
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dparse_opts ( int  argc,
char **  argv,
magma_dopts *  opts,
int *  matrices,
magma_queue_t  queue 
)

Parses input options for a solver.

Parameters
[in]argcint command line input
[in]argvchar** command line input
[in,out]optsmagma_dopts * magma solver options
[out]matricesint counter how many linear systems to process
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dresidual ( magma_d_sparse_matrix  A,
magma_d_vector  b,
magma_d_vector  x,
double *  res,
magma_queue_t  queue 
)

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

Parameters
[in]Amagma_d_sparse_matrix input matrix A
[in]bmagma_d_vector RHS b
[in]xmagma_d_vector solution approximation
[out]resdouble* return residual
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_drowentries ( magma_d_sparse_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]Amagma_d_sparse_matrix* sparse matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dsolverinfo ( magma_d_solver_par *  solver_par,
magma_d_preconditioner *  precond_par,
magma_queue_t  queue 
)

Prints information about a previously called solver.

Parameters
[in]solver_parmagma_d_solver_par* structure containing all solver information
[in,out]precond_parmagma_d_preconditioner* structure containing all preconditioner information
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dsolverinfo_free ( magma_d_solver_par *  solver_par,
magma_d_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_parmagma_d_solver_par* structure containing all solver information
[in,out]precond_parmagma_d_preconditioner* structure containing all preconditioner information
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dsolverinfo_init ( magma_d_solver_par *  solver_par,
magma_d_preconditioner *  precond_par,
magma_queue_t  queue 
)

Initializes all solver and preconditioner parameters.

Parameters
[in,out]solver_parmagma_d_solver_par* structure containing all solver information
[in,out]precond_parmagma_d_preconditioner* structure containing all preconditioner information
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dvget ( magma_d_vector  v,
magma_int_t *  m,
magma_int_t *  n,
double **  val,
magma_queue_t  queue 
)

Passes a MAGMA vector back.

Parameters
[in]vmagma_d_vector magma vector
[out]mmagma_int_t number of rows
[out]nmagma_int_t number of columns
[out]valdouble* array containing vector entries
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dvget_dev ( magma_d_vector  v,
magma_int_t *  m,
magma_int_t *  n,
magmaDouble_ptr *  val,
magma_queue_t  queue 
)

Passes a MAGMA vector back (located on DEV).

Parameters
[in]vmagma_d_vector magma vector
[out]mmagma_int_t number of rows
[out]nmagma_int_t number of columns
[out]valmagmaDouble_ptr array containing vector entries
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dvset ( magma_int_t  m,
magma_int_t  n,
double *  val,
magma_d_vector *  v,
magma_queue_t  queue 
)

Passes a vector to MAGMA.

Parameters
[in]mmagma_int_t number of rows
[in]nmagma_int_t number of columns
[in]valdouble* array containing vector entries
[out]vmagma_d_vector* magma vector
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dvset_dev ( magma_int_t  m,
magma_int_t  n,
magmaDouble_ptr  val,
magma_d_vector *  v,
magma_queue_t  queue 
)

Passes a vector to MAGMA (located on DEV).

Parameters
[in]mmagma_int_t number of rows
[in]nmagma_int_t number of columns
[in]valmagmaDouble_ptr array containing vector entries
[out]vmagma_d_vector* magma vector
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dvtranspose ( magma_d_vector  x,
magma_d_vector *  y,
magma_queue_t  queue 
)

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

Parameters
[in]xmagma_d_vector input vector
[out]ymagma_d_vector* output vector
[in]queuemagma_queue_t Queue to execute in.
magma_int_t print_d_csr ( magma_int_t  n_row,
magma_int_t  n_col,
magma_int_t  nnz,
double **  val,
magma_index_t **  row,
magma_index_t **  col,
magma_queue_t  queue 
)

Prints a CSR matrix in CSR format.

Parameters
[in]n_rowmagma_int_t* number of rows in matrix
[in]n_colmagma_int_t* number of columns in matrix
[in]nnzmagma_int_t* number of nonzeros in matrix
[in]valdouble** value array of CSR
[in]rowmagma_index_t** row pointer of CSR
[in]colmagma_index_t** column indices of CSR
[in]queuemagma_queue_t Queue to execute in.
magma_int_t print_d_csr_mtx ( magma_int_t  n_row,
magma_int_t  n_col,
magma_int_t  nnz,
double **  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_rowmagma_int_t* number of rows in matrix
[in]n_colmagma_int_t* number of columns in matrix
[in]nnzmagma_int_t* number of nonzeros in matrix
[in]valdouble** value array of CSR
[in]rowmagma_index_t** row pointer of CSR
[in]colmagma_index_t** column indices of CSR
[in]MajorTypemagma_index_t Row or Column sort default: 0 = RowMajor, 1 = ColMajor
[in]queuemagma_queue_t Queue to execute in.
magma_int_t read_d_csr_from_binary ( magma_int_t *  n_row,
magma_int_t *  n_col,
magma_int_t *  nnz,
double **  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 binary and converts it into CSR format.

It duplicates the off-diagonal entries in the symmetric case.

Parameters
[out]n_rowmagma_int_t* number of rows in matrix
[out]n_colmagma_int_t* number of columns in matrix
[out]nnzmagma_int_t* number of nonzeros in matrix
[out]valdouble** value array of CSR output
[out]rowmagma_index_t** row pointer of CSR output
[out]colmagma_index_t** column indices of CSR output
[in]filenameconst char* filname of the mtx matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t read_d_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,
double **  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]typemagma_storage_t* storage type of matrix
[out]locationmagma_location_t* location of matrix
[out]n_rowmagma_int_t* number of rows in matrix
[out]n_colmagma_int_t* number of columns in matrix
[out]nnzmagma_int_t* number of nonzeros in matrix
[out]valdouble** value array of CSR output
[out]rowmagma_index_t** row pointer of CSR output
[out]colmagma_index_t** column indices of CSR output
[in]filenameconst char* filname of the mtx matrix
[in]queuemagma_queue_t Queue to execute in.
magma_int_t write_d_csr_mtx ( magma_int_t  n_row,
magma_int_t  n_col,
magma_int_t  nnz,
double **  val,
magma_index_t **  row,
magma_index_t **  col,
magma_order_t  MajorType,
const char *  filename,
magma_queue_t  queue 
)

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

Parameters
[in]n_rowmagma_int_t* number of rows in matrix
[in]n_colmagma_int_t* number of columns in matrix
[in]nnzmagma_int_t* number of nonzeros in matrix
[in]valdouble** value array of CSR
[in]rowmagma_index_t** row pointer of CSR
[in]colmagma_index_t** column indices of CSR
[in]MajorTypemagma_index_t Row or Column sort default: 0 = RowMajor, 1 = ColMajor
[in]filenameconst char* output-filname of the mtx matrix
[in]queuemagma_queue_t Queue to execute in.