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

Functions

magma_int_t magma_cbajac_csr (magma_int_t localiters, magma_c_sparse_matrix D, magma_c_sparse_matrix R, magma_c_vector b, magma_c_vector *x, magma_queue_t queue)
 This routine is a block-asynchronous Jacobi iteration performing s local Jacobi-updates within the block. More...
 
void magma_ccompact (magma_int_t m, magma_int_t n, magmaFloatComplex_ptr dA, magma_int_t ldda, magmaFloat_ptr dnorms, float tol, magmaInt_ptr active, magmaInt_ptr cBlock, magma_queue_t queue)
 ZCOMPACT takes a set of n vectors of size m (in dA) and their norms and compacts them into the cBlock size<=n vectors that have norms > tol. More...
 
magma_int_t magma_cjacobisetup_vector_gpu (int num_rows, magma_c_vector b, magma_c_vector d, magma_c_vector c, magma_c_vector *x, magma_queue_t queue)
 Prepares the Jacobi Iteration according to x^(k+1) = D^(-1) * b - D^(-1) * (L+U) * x^k x^(k+1) = c - M * x^k. More...
 
magma_int_t magma_clobpcg_maxpy (magma_int_t num_rows, magma_int_t num_vecs, magmaFloatComplex_ptr X, magmaFloatComplex_ptr Y, magma_queue_t queue)
 This routine computes a axpy for a mxn matrix: More...
 
int magma_cbicgmerge1 (int n, magmaFloatComplex_ptr skp, magmaFloatComplex_ptr v, magmaFloatComplex_ptr r, magmaFloatComplex_ptr p)
 Mergels multiple operations into one kernel: More...
 
int magma_cbicgmerge2 (int n, magmaFloatComplex_ptr skp, magmaFloatComplex_ptr r, magmaFloatComplex_ptr v, magmaFloatComplex_ptr s)
 Mergels multiple operations into one kernel: More...
 
int magma_cbicgmerge3 (int n, magmaFloatComplex_ptr skp, magmaFloatComplex_ptr p, magmaFloatComplex_ptr s, magmaFloatComplex_ptr t, magmaFloatComplex_ptr x, magmaFloatComplex_ptr r)
 Mergels multiple operations into one kernel: More...
 
int magma_cbicgmerge4 (int type, magmaFloatComplex_ptr skp)
 Performs some parameter operations for the BiCGSTAB with scalars on GPU. More...
 
magma_int_t magma_cbicgmerge_spmv1 (magma_c_sparse_matrix A, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr dp, magmaFloatComplex_ptr dr, magmaFloatComplex_ptr dv, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Merges the first SpmV using CSR with the dot product and the computation of alpha. More...
 
magma_int_t magma_cbicgmerge_spmv2 (magma_c_sparse_matrix A, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr ds, magmaFloatComplex_ptr dt, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Merges the second SpmV using CSR with the dot product and the computation of omega. More...
 
magma_int_t magma_cbicgmerge_xrbeta (int n, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr rr, magmaFloatComplex_ptr r, magmaFloatComplex_ptr p, magmaFloatComplex_ptr s, magmaFloatComplex_ptr t, magmaFloatComplex_ptr x, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Merges the second SpmV using CSR with the dot product and the computation of omega. More...
 
magma_int_t magma_ccgmerge_spmv1 (magma_c_sparse_matrix A, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr dd, magmaFloatComplex_ptr dz, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Merges the first SpmV using different formats with the dot product and the computation of rho. More...
 

Detailed Description

Function Documentation

magma_int_t magma_cbajac_csr ( magma_int_t  localiters,
magma_c_sparse_matrix  D,
magma_c_sparse_matrix  R,
magma_c_vector  b,
magma_c_vector *  x,
magma_queue_t  queue 
)

This routine is a block-asynchronous Jacobi iteration performing s local Jacobi-updates within the block.

Input format is two CSR matrices, one containing the diagonal blocks, one containing the rest.

Parameters
[in]localitersmagma_int_t number of local Jacobi-like updates
[in]Dmagma_c_sparse_matrix input matrix with diagonal blocks
[in]Rmagma_c_sparse_matrix input matrix with non-diagonal parts
[in]bmagma_c_vector RHS
[in]xmagma_c_vector* iterate/solution
[in]queuemagma_queue_t Queue to execute in.
int magma_cbicgmerge1 ( int  n,
magmaFloatComplex_ptr  skp,
magmaFloatComplex_ptr  v,
magmaFloatComplex_ptr  r,
magmaFloatComplex_ptr  p 
)

Mergels multiple operations into one kernel:

p = beta*p p = p-omega*beta*v p = p+r

-> p = r + beta * ( p - omega * v )

Parameters
[in]nint dimension n
[in]skpmagmaFloatComplex_ptr set of scalar parameters
[in]vmagmaFloatComplex_ptr input v
[in]rmagmaFloatComplex_ptr input r
in/out]p magmaFloatComplex_ptr input/output p
[in]queuemagma_queue_t Queue to execute in.
int magma_cbicgmerge2 ( int  n,
magmaFloatComplex_ptr  skp,
magmaFloatComplex_ptr  r,
magmaFloatComplex_ptr  v,
magmaFloatComplex_ptr  s 
)

Mergels multiple operations into one kernel:

s=r s=s-alpha*v

-> s = r - alpha * v

Parameters
[in]nint dimension n
[in]skpmagmaFloatComplex_ptr set of scalar parameters
[in]rmagmaFloatComplex_ptr input r
[in]vmagmaFloatComplex_ptr input v
s]s magmaFloatComplex_ptr output s
[in]queuemagma_queue_t Queue to execute in.
int magma_cbicgmerge3 ( int  n,
magmaFloatComplex_ptr  skp,
magmaFloatComplex_ptr  p,
magmaFloatComplex_ptr  s,
magmaFloatComplex_ptr  t,
magmaFloatComplex_ptr  x,
magmaFloatComplex_ptr  r 
)

Mergels multiple operations into one kernel:

x=x+alpha*p x=x+omega*s r=s r=r-omega*t

-> x = x + alpha * p + omega * s -> r = s - omega * t

Parameters
[in]nint dimension n
[in]skpmagmaFloatComplex_ptr set of scalar parameters
[in]pmagmaFloatComplex_ptr input p
[in]smagmaFloatComplex_ptr input s
[in]tmagmaFloatComplex_ptr input t
in/out]x magmaFloatComplex_ptr input/output x
in/out]r magmaFloatComplex_ptr input/output r
[in]queuemagma_queue_t Queue to execute in.
int magma_cbicgmerge4 ( int  type,
magmaFloatComplex_ptr  skp 
)

Performs some parameter operations for the BiCGSTAB with scalars on GPU.

Parameters
[in]typeint kernel type
in/out]skp magmaFloatComplex_ptr vector with parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cbicgmerge_spmv1 ( magma_c_sparse_matrix  A,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  dp,
magmaFloatComplex_ptr  dr,
magmaFloatComplex_ptr  dv,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Merges the first SpmV using CSR with the dot product and the computation of alpha.

Parameters
[in]Amagma_c_sparse_matrix system matrix
[in]d1magmaFloatComplex_ptr temporary vector
[in]d2magmaFloatComplex_ptr temporary vector
[in]dpmagmaFloatComplex_ptr input vector p
[in]drmagmaFloatComplex_ptr input vector r
[in]dvmagmaFloatComplex_ptr output vector v
in/out]skp magmaFloatComplex_ptr array for parameters ( skp[0]=alpha )
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cbicgmerge_spmv2 ( magma_c_sparse_matrix  A,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  ds,
magmaFloatComplex_ptr  dt,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Merges the second SpmV using CSR with the dot product and the computation of omega.

Parameters
[in]Amagma_c_sparse_matrix input matrix
[in]d1magmaFloatComplex_ptr temporary vector
[in]d2magmaFloatComplex_ptr temporary vector
[in]dsmagmaFloatComplex_ptr input vector s
[in]dtmagmaFloatComplex_ptr output vector t
in/out]skp magmaFloatComplex_ptr array for parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cbicgmerge_xrbeta ( int  n,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  rr,
magmaFloatComplex_ptr  r,
magmaFloatComplex_ptr  p,
magmaFloatComplex_ptr  s,
magmaFloatComplex_ptr  t,
magmaFloatComplex_ptr  x,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Merges the second SpmV using CSR with the dot product and the computation of omega.

Parameters
[in]nint dimension n
[in]d1magmaFloatComplex_ptr temporary vector
[in]d2magmaFloatComplex_ptr temporary vector
[in]rrmagmaFloatComplex_ptr input vector rr
[in]rmagmaFloatComplex_ptr input/output vector r
[in]pmagmaFloatComplex_ptr input vector p
[in]smagmaFloatComplex_ptr input vector s
[in]tmagmaFloatComplex_ptr input vector t
[out]xmagmaFloatComplex_ptr output vector x
[in]skpmagmaFloatComplex_ptr array for parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_ccgmerge_spmv1 ( magma_c_sparse_matrix  A,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  dd,
magmaFloatComplex_ptr  dz,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Merges the first SpmV using different formats with the dot product and the computation of rho.

Parameters
[in]Amagma_c_sparse_matrix input matrix
[in]d1magmaFloatComplex_ptr temporary vector
[in]d2magmaFloatComplex_ptr temporary vector
[in]ddmagmaFloatComplex_ptr input vector d
[out]dzmagmaFloatComplex_ptr input vector z
[out]skpmagmaFloatComplex_ptr array for parameters ( skp[3]=rho )
[in]queuemagma_queue_t Queue to execute in.
void magma_ccompact ( magma_int_t  m,
magma_int_t  n,
magmaFloatComplex_ptr  dA,
magma_int_t  ldda,
magmaFloat_ptr  dnorms,
float  tol,
magmaInt_ptr  active,
magmaInt_ptr  cBlock,
magma_queue_t  queue 
)

ZCOMPACT takes a set of n vectors of size m (in dA) and their norms and compacts them into the cBlock size<=n vectors that have norms > tol.

The active mask array has 1 or 0, showing if a vector remained or not in the compacted resulting set of vectors.

Parameters
[in]mINTEGER The number of rows of the matrix dA. M >= 0.
[in]nINTEGER The number of columns of the matrix dA. N >= 0.
[in]in,out]dA COMPLEX REAL array, dimension (LDDA,N) The m by n matrix dA.
[in]lddaINTEGER The leading dimension of the array dA. LDDA >= max(1,M).
[in]dnormsREAL array, dimension N The norms of the N vectors in dA
[in]tolDOUBLE PRECISON The tolerance value used in the criteria to compact or not.
[in]out]active INTEGER array, dimension N A mask of 1s and 0s showing if a vector remains or has been removed
[in]out]cBlock magmaInt_ptr The number of vectors that remain in dA (i.e., with norms > tol).
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cjacobisetup_vector_gpu ( int  num_rows,
magma_c_vector  b,
magma_c_vector  d,
magma_c_vector  c,
magma_c_vector *  x,
magma_queue_t  queue 
)

Prepares the Jacobi Iteration according to x^(k+1) = D^(-1) * b - D^(-1) * (L+U) * x^k x^(k+1) = c - M * x^k.

Returns the vector c. It calls a GPU kernel

Parameters
[in]num_rowsmagma_int_t number of rows
[in]bmagma_c_vector RHS b
[in]dmagma_c_vector vector with diagonal entries
[out]cmagma_c_vector* c = D^(-1) * b
[out]xmagma_c_vector* iteration vector
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_clobpcg_maxpy ( magma_int_t  num_rows,
magma_int_t  num_vecs,
magmaFloatComplex_ptr  X,
magmaFloatComplex_ptr  Y,
magma_queue_t  queue 
)

This routine computes a axpy for a mxn matrix:

Y = X + Y

It replaces: magma_caxpy(m*n, c_one, Y, 1, X, 1);

/ 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]XmagmaFloatComplex_ptr input vector X
in/out]Y magmaFloatComplex_ptr input/output vector Y
[in]queuemagma_queue_t Queue to execute in.