double precision
[Sparse auxiliary]

Functions

magma_int_t magma_dlobpcg_res (magma_int_t num_rows, magma_int_t num_vecs, double *evalues, double *X, double *R, double *res)
 This routine computes for Block-LOBPCG, the set of residuals.
magma_int_t magma_dlobpcg_shift (magma_int_t num_rows, magma_int_t num_vecs, magma_int_t shift, double *x)
 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.
magma_int_t magma_dcopyscale (int n, int k, double *r, double *v, double *skp)
 Computes the correction term of the pipelined GMRES according to P.
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)
 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.

Function Documentation

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 
)

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:
alpha double scalar alpha
A magma_d_sparse_matrix sparse matrix A
lambda double scalar lambda
x magma_d_vector input vector x
beta double scalar beta
offset magma_int_t in case not the main diagonal is scaled
blocksize magma_int_t in case of processing multiple vectors
add_rows magma_int_t* in case the matrixpowerskernel is used
y magma_d_vector output vector y
magma_int_t magma_dcopyscale ( int  n,
int  k,
double *  r,
double *  v,
double *  skp 
)

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:
n int length of v_i
k int # skp entries v_i^T * r ( without r )
r double* vector of length n
v double* vector of length n
skp double* array of parameters
magma_int_t magma_dlobpcg_res ( magma_int_t  num_rows,
magma_int_t  num_vecs,
double *  evalues,
double *  X,
double *  R,
double *  res 
)

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:
num_rows magma_int_t number of rows
num_vecs magma_int_t number of vectors
evalues double* array of eigenvalues/approximations
X double* block of eigenvector approximations
R double* block of residuals
res double* array of residuals
magma_int_t magma_dlobpcg_shift ( magma_int_t  num_rows,
magma_int_t  num_vecs,
magma_int_t  shift,
double *  x 
)

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:
num_rows magma_int_t number of rows
num_vecs magma_int_t number of vectors
shift magma_int_t shift number
x double* input/output vector x

Generated on 17 Sep 2014 for MAGMA by  doxygen 1.6.1