MAGMA  2.3.0
Matrix Algebra for GPU and Multicore Architectures
 All Classes Files Functions Friends Groups Pages
single-complex precision

Functions

magma_int_t magma_ccustomspmv (magma_int_t m, magma_int_t n, magmaFloatComplex alpha, magmaFloatComplex beta, magmaFloatComplex *x, magmaFloatComplex *y, magma_queue_t queue)
 This is an interface to any custom sparse matrix vector product. More...
 
magma_int_t magma_cge3pt (magma_int_t m, magma_int_t n, magmaFloatComplex alpha, magmaFloatComplex beta, magmaFloatComplex_ptr dx, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine is a 3-pt-stencil operator derived from a FD-scheme in 2D with Dirichlet boundary. More...
 
magma_int_t magma_cgeaxpy (magmaFloatComplex alpha, magma_c_matrix X, magmaFloatComplex beta, magma_c_matrix *Y, magma_queue_t queue)
 This routine computes Y = alpha * X + beta * Y on the GPU. More...
 
magma_int_t magma_cgecsr5mv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t p, magmaFloatComplex alpha, magma_int_t sigma, magma_int_t bit_y_offset, magma_int_t bit_scansum_offset, magma_int_t num_packet, magmaUIndex_ptr dtile_ptr, magmaUIndex_ptr dtile_desc, magmaIndex_ptr dtile_desc_offset_ptr, magmaIndex_ptr dtile_desc_offset, magmaFloatComplex_ptr dcalibrator, magma_int_t tail_tile_start, magmaFloatComplex_ptr dval, magmaIndex_ptr drowptr, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A * x + beta * y on the GPU. More...
 
magma_int_t magma_cgecsrmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr drowptr, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A * x + beta * y on the GPU. More...
 
magma_int_t magma_cgecsrmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magmaFloatComplex alpha, magmaFloatComplex lambda, magmaFloatComplex_ptr dval, magmaIndex_ptr drowptr, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magma_int_t offset, magma_int_t blocksize, magma_index_t *addrows, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * ( A -lambda I ) * x + beta * y on the GPU. More...
 
magma_int_t magma_cgecsrreimsplit (magma_c_matrix A, magma_c_matrix *ReA, magma_c_matrix *ImA, magma_queue_t queue)
 This routine takes an input matrix A in CSR format and located on the GPU and splits it into two matrixes ReA and ImA containing the real and the imaginary contributions of A. More...
 
magma_int_t magma_cgedensereimsplit (magma_c_matrix A, magma_c_matrix *ReA, magma_c_matrix *ImA, magma_queue_t queue)
 This routine takes an input matrix A in DENSE format and located on the GPU and splits it into two matrixes ReA and ImA containing the real and the imaginary contributions of A. More...
 
magma_int_t magma_cgeellmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A * x + beta * y on the GPU. More...
 
magma_int_t magma_cgeellmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaFloatComplex alpha, magmaFloatComplex lambda, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magma_int_t offset, magma_int_t blocksize, magmaIndex_ptr addrows, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU. More...
 
magma_int_t magma_cgeellrtmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaIndex_ptr drowlength, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_int_t alignment, magma_int_t blocksize, magma_queue_t queue)
 This routine computes y = alpha * A * x + beta * y on the GPU. More...
 
magma_int_t magma_cgeelltmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaFloatComplex alpha, magmaFloatComplex lambda, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magma_int_t offset, magma_int_t blocksize, magmaIndex_ptr addrows, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU. More...
 
magma_int_t magma_cmdotc (magma_int_t n, magma_int_t k, magmaFloatComplex_ptr v, magmaFloatComplex_ptr r, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of vectors v_i such that. More...
 
magma_int_t magma_cgesellpmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t blocksize, magma_int_t slices, magma_int_t alignment, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaIndex_ptr drowptr, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A^t * x + beta * y on the GPU. More...
 
magma_int_t magma_cgesellcmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t blocksize, magma_int_t slices, magma_int_t alignment, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaIndex_ptr drowptr, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A^t * x + beta * y on the GPU. More...
 
magma_int_t magma_cmdotc_shfl (magma_int_t n, magma_int_t k, magmaFloatComplex_ptr v, magmaFloatComplex_ptr r, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of vectors v_i such that. More...
 
magma_int_t magma_cmdotc1 (magma_int_t n, magmaFloatComplex_ptr v0, magmaFloatComplex_ptr w0, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 1 vectors such that. More...
 
magma_int_t magma_cmdotc2 (magma_int_t n, magmaFloatComplex_ptr v0, magmaFloatComplex_ptr w0, magmaFloatComplex_ptr v1, magmaFloatComplex_ptr w1, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 2 vectors such that. More...
 
magma_int_t magma_cmdotc3 (magma_int_t n, magmaFloatComplex_ptr v0, magmaFloatComplex_ptr w0, magmaFloatComplex_ptr v1, magmaFloatComplex_ptr w1, magmaFloatComplex_ptr v2, magmaFloatComplex_ptr w2, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 4 vectors such that. More...
 
magma_int_t magma_cmdotc4 (magma_int_t n, magmaFloatComplex_ptr v0, magmaFloatComplex_ptr w0, magmaFloatComplex_ptr v1, magmaFloatComplex_ptr w1, magmaFloatComplex_ptr v2, magmaFloatComplex_ptr w2, magmaFloatComplex_ptr v3, magmaFloatComplex_ptr w3, magmaFloatComplex_ptr d1, magmaFloatComplex_ptr d2, magmaFloatComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 4 vectors such that. More...
 
magma_int_t magma_cmgecsrmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr drowptr, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU. More...
 
magma_int_t magma_cmgeellmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magma_int_t nnz_per_row, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU. More...
 
magma_int_t magma_cmgeelltmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magma_int_t nnz_per_row, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU. More...
 
magma_int_t magma_cmgesellpmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magma_int_t blocksize, magma_int_t slices, magma_int_t alignment, magmaFloatComplex alpha, magmaFloatComplex_ptr dval, magmaIndex_ptr dcolind, magmaIndex_ptr drowptr, magmaFloatComplex_ptr dx, magmaFloatComplex beta, magmaFloatComplex_ptr dy, magma_queue_t queue)
 This routine computes Y = alpha * A^t * X + beta * Y on the GPU. More...
 
magma_int_t magma_dmdotc1 (magma_int_t n, magmaDouble_ptr v0, magmaDouble_ptr w0, magmaDouble_ptr d1, magmaDouble_ptr d2, magmaDouble_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 1 vectors such that. More...
 
magma_int_t magma_dmdotc2 (magma_int_t n, magmaDouble_ptr v0, magmaDouble_ptr w0, magmaDouble_ptr v1, magmaDouble_ptr w1, magmaDouble_ptr d1, magmaDouble_ptr d2, magmaDouble_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 2 vectors such that. More...
 
magma_int_t magma_dmdotc3 (magma_int_t n, magmaDouble_ptr v0, magmaDouble_ptr w0, magmaDouble_ptr v1, magmaDouble_ptr w1, magmaDouble_ptr v2, magmaDouble_ptr w2, magmaDouble_ptr d1, magmaDouble_ptr d2, magmaDouble_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 4 vectors such that. More...
 
magma_int_t magma_c_spmv (magmaFloatComplex alpha, magma_c_matrix A, magma_c_matrix x, magmaFloatComplex beta, magma_c_matrix 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 * x + beta * y. More...
 
magma_int_t magma_c_spmv_shift (magmaFloatComplex alpha, magma_c_matrix A, magmaFloatComplex lambda, magma_c_matrix x, magmaFloatComplex beta, magma_int_t offset, magma_int_t blocksize, magma_index_t *add_rows, magma_c_matrix 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_c_spmm (magmaFloatComplex alpha, magma_c_matrix A, magma_c_matrix B, magma_c_matrix *C, magma_queue_t queue)
 For a given input matrix A and B and scalar alpha, the wrapper determines the suitable SpMV computing C = alpha * A * B. More...
 
magma_int_t magma_ccuspaxpy (magmaFloatComplex *alpha, magma_c_matrix A, magmaFloatComplex *beta, magma_c_matrix B, magma_c_matrix *AB, magma_queue_t queue)
 This is an interface to the cuSPARSE routine csrgeam computing the sum of two sparse matrices stored in csr format: More...
 
magma_int_t magma_ccuspmm (magma_c_matrix A, magma_c_matrix B, magma_c_matrix *AB, magma_queue_t queue)
 This is an interface to the cuSPARSE routine csrmm computing the product of two sparse matrices stored in csr format. More...
 
magma_int_t magma_smdotc1 (magma_int_t n, magmaFloat_ptr v0, magmaFloat_ptr w0, magmaFloat_ptr d1, magmaFloat_ptr d2, magmaFloat_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 1 vectors such that. More...
 
magma_int_t magma_smdotc2 (magma_int_t n, magmaFloat_ptr v0, magmaFloat_ptr w0, magmaFloat_ptr v1, magmaFloat_ptr w1, magmaFloat_ptr d1, magmaFloat_ptr d2, magmaFloat_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 2 vectors such that. More...
 
magma_int_t magma_smdotc3 (magma_int_t n, magmaFloat_ptr v0, magmaFloat_ptr w0, magmaFloat_ptr v1, magmaFloat_ptr w1, magmaFloat_ptr v2, magmaFloat_ptr w2, magmaFloat_ptr d1, magmaFloat_ptr d2, magmaFloat_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 4 vectors such that. More...
 
magma_int_t magma_zmdotc1 (magma_int_t n, magmaDoubleComplex_ptr v0, magmaDoubleComplex_ptr w0, magmaDoubleComplex_ptr d1, magmaDoubleComplex_ptr d2, magmaDoubleComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 1 vectors such that. More...
 
magma_int_t magma_zmdotc2 (magma_int_t n, magmaDoubleComplex_ptr v0, magmaDoubleComplex_ptr w0, magmaDoubleComplex_ptr v1, magmaDoubleComplex_ptr w1, magmaDoubleComplex_ptr d1, magmaDoubleComplex_ptr d2, magmaDoubleComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 2 vectors such that. More...
 
magma_int_t magma_zmdotc3 (magma_int_t n, magmaDoubleComplex_ptr v0, magmaDoubleComplex_ptr w0, magmaDoubleComplex_ptr v1, magmaDoubleComplex_ptr w1, magmaDoubleComplex_ptr v2, magmaDoubleComplex_ptr w2, magmaDoubleComplex_ptr d1, magmaDoubleComplex_ptr d2, magmaDoubleComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 4 vectors such that. More...
 

Detailed Description

Function Documentation

magma_int_t magma_ccustomspmv ( magma_int_t  m,
magma_int_t  n,
magmaFloatComplex  alpha,
magmaFloatComplex  beta,
magmaFloatComplex *  x,
magmaFloatComplex *  y,
magma_queue_t  queue 
)

This is an interface to any custom sparse matrix vector product.

It should compute y = alpha*FUNCTION(x) + beta*y The vectors are located on the device, the scalars on the CPU.

Parameters
[in]mmagma_int_t number of rows
[in]nmagma_int_t number of columns
[in]alphamagmaFloatComplex scalar alpha
[in]xmagmaFloatComplex * input vector x
[in]betamagmaFloatComplex scalar beta
[out]ymagmaFloatComplex * output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cge3pt ( magma_int_t  m,
magma_int_t  n,
magmaFloatComplex  alpha,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dx,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine is a 3-pt-stencil operator derived from a FD-scheme in 2D with Dirichlet boundary.

It computes y_i = -2 x_i + x_{i-1} + x_{i+1}

Parameters
[in]mmagma_int_t number of rows in x and y
[in]nmagma_int_t number of columns in x and y
[in]alphamagmaFloatComplex scalar multiplier
[in]betamagmaFloatComplex scalar multiplier
[in]dxmagmaFloatComplex_ptr input vector x
[out]dymagmaFloatComplex_ptr output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgeaxpy ( magmaFloatComplex  alpha,
magma_c_matrix  X,
magmaFloatComplex  beta,
magma_c_matrix *  Y,
magma_queue_t  queue 
)

This routine computes Y = alpha * X + beta * Y on the GPU.

The input format is magma_c_matrix. It can handle both, dense matrix (vector block) and CSR matrices. For the latter, it interfaces the cuSPARSE library.

Parameters
[in]alphamagmaFloatComplex scalar multiplier.
[in]Xmagma_c_matrix input/output matrix Y.
[in]betamagmaFloatComplex scalar multiplier.
[in,out]Ymagma_c_matrix* input matrix X.
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgecsr5mv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  p,
magmaFloatComplex  alpha,
magma_int_t  sigma,
magma_int_t  bit_y_offset,
magma_int_t  bit_scansum_offset,
magma_int_t  num_packet,
magmaUIndex_ptr  dtile_ptr,
magmaUIndex_ptr  dtile_desc,
magmaIndex_ptr  dtile_desc_offset_ptr,
magmaIndex_ptr  dtile_desc_offset,
magmaFloatComplex_ptr  dcalibrator,
magma_int_t  tail_tile_start,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  drowptr,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes y = alpha * A * x + beta * y on the GPU.

The input format is CSR5 (val (tile-wise column-major), row_pointer, col (tile-wise column-major), tile_pointer, tile_desc).

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]pmagma_int_t number of tiles in A
[in]alphamagmaFloatComplex scalar multiplier
[in]sigmamagma_int_t sigma in A in CSR5
[in]bit_y_offsetmagma_int_t bit_y_offset in A in CSR5
[in]bit_scansum_offsetmagma_int_t bit_scansum_offset in A in CSR5
[in]num_packetmagma_int_t num_packet in A in CSR5
[in]dtile_ptrmagmaUIndex_ptr tilepointer of A in CSR5
[in]dtile_descmagmaUIndex_ptr tiledescriptor of A in CSR5
[in]dtile_desc_offset_ptrmagmaIndex_ptr tiledescriptor_offsetpointer of A in CSR5
[in]dtile_desc_offsetmagmaIndex_ptr tiledescriptor_offsetpointer of A in CSR5
[in]dcalibratormagmaFloatComplex_ptr calibrator of A in CSR5
[in]tail_tile_startmagma_int_t start of the last tile in A
[in]dvalmagmaFloatComplex_ptr array containing values of A in CSR
[in]dvalmagmaFloatComplex_ptr array containing values of A in CSR
[in]drowptrmagmaIndex_ptr rowpointer of A in CSR
[in]dcolindmagmaIndex_ptr columnindices of A in CSR
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgecsrmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  drowptr,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes y = alpha * A * x + beta * y on the GPU.

The input format is CSR (val, row, col).

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]alphamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in CSR
[in]drowptrmagmaIndex_ptr rowpointer of A in CSR
[in]dcolindmagmaIndex_ptr columnindices of A in CSR
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgecsrmv_shift ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magmaFloatComplex  alpha,
magmaFloatComplex  lambda,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  drowptr,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magma_int_t  offset,
magma_int_t  blocksize,
magma_index_t *  addrows,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes y = alpha * ( A -lambda I ) * x + beta * y on the GPU.

It is a shifted version of the CSR-SpMV.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]alphamagmaFloatComplex scalar multiplier
[in]lambdamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in CSR
[in]drowptrmagmaIndex_ptr rowpointer of A in CSR
[in]dcolindmagmaIndex_ptr columnindices of A in CSR
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[in]offsetmagma_int_t in case not the main diagonal is scaled
[in]blocksizemagma_int_t in case of processing multiple vectors
[in]addrowsmagmaIndex_ptr in case the matrixpowerskernel is used
[out]dymagmaFloatComplex_ptr output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgecsrreimsplit ( magma_c_matrix  A,
magma_c_matrix *  ReA,
magma_c_matrix *  ImA,
magma_queue_t  queue 
)

This routine takes an input matrix A in CSR format and located on the GPU and splits it into two matrixes ReA and ImA containing the real and the imaginary contributions of A.

The output matrices are allocated within the routine.

Parameters
[in]Amagma_c_matrix input matrix A.
[out]ReAmagma_c_matrix* output matrix contaning real contributions.
[out]ImAmagma_c_matrix* output matrix contaning complex contributions.
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgedensereimsplit ( magma_c_matrix  A,
magma_c_matrix *  ReA,
magma_c_matrix *  ImA,
magma_queue_t  queue 
)

This routine takes an input matrix A in DENSE format and located on the GPU and splits it into two matrixes ReA and ImA containing the real and the imaginary contributions of A.

The output matrices are allocated within the routine.

Parameters
[in]Amagma_c_matrix input matrix A.
[out]ReAmagma_c_matrix* output matrix contaning real contributions.
[out]ImAmagma_c_matrix* output matrix contaning complex contributions.
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgeellmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  nnz_per_row,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes y = alpha * A * x + beta * y on the GPU.

Input format is ELLPACK.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in ELLPACK
[in]dcolindmagmaIndex_ptr columnindices of A in ELLPACK
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgeellmv_shift ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  nnz_per_row,
magmaFloatComplex  alpha,
magmaFloatComplex  lambda,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magma_int_t  offset,
magma_int_t  blocksize,
magmaIndex_ptr  addrows,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU.

Input format is ELLPACK. It is the shifted version of the ELLPACK SpMV.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaFloatComplex scalar multiplier
[in]lambdamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in ELLPACK
[in]dcolindmagmaIndex_ptr columnindices of A in ELLPACK
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[in]offsetmagma_int_t in case not the main diagonal is scaled
[in]blocksizemagma_int_t in case of processing multiple vectors
[in]addrowsmagmaIndex_ptr in case the matrixpowerskernel is used
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgeellrtmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  nnz_per_row,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaIndex_ptr  drowlength,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_int_t  alignment,
magma_int_t  blocksize,
magma_queue_t  queue 
)

This routine computes y = alpha * A * x + beta * y on the GPU.

Input format is ELLRT. The ideas are taken from "Improving the performance of the sparse matrix vector product with GPUs", (CIT 2010), and modified to provide correct values.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows
[in]nmagma_int_t number of columns
[in]nnz_per_rowmagma_int_t max number of nonzeros in a row
[in]alphamagmaFloatComplex scalar alpha
[in]dvalmagmaFloatComplex_ptr val array
[in]dcolindmagmaIndex_ptr col indices
[in]drowlengthmagmaIndex_ptr number of elements in each row
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar beta
[out]dymagmaFloatComplex_ptr output vector y
[in]blocksizemagma_int_t threads per block
[in]alignmentmagma_int_t threads assigned to each row
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgeelltmv_shift ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  nnz_per_row,
magmaFloatComplex  alpha,
magmaFloatComplex  lambda,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magma_int_t  offset,
magma_int_t  blocksize,
magmaIndex_ptr  addrows,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU.

Input format is ELL.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaFloatComplex scalar multiplier
[in]lambdamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in ELL
[in]dcolindmagmaIndex_ptr columnindices of A in ELL
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[in]offsetmagma_int_t in case not the main diagonal is scaled
[in]blocksizemagma_int_t in case of processing multiple vectors
[in]addrowsmagmaIndex_ptr in case the matrixpowerskernel is used
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmdotc ( magma_int_t  n,
magma_int_t  k,
magmaFloatComplex_ptr  v,
magmaFloatComplex_ptr  r,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of vectors v_i such that.

skp = ( <v_0,r>, <v_1,r>, .. )

Returns the vector skp.

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

vectors v_i

Parameters
[in]vmagmaFloatComplex_ptr v = (v_0 .. v_i.. v_k)
[in]rmagmaFloatComplex_ptr r
[in]d1magmaFloatComplex_ptr workspace
[in]d2magmaFloatComplex_ptr workspace
[out]skpmagmaFloatComplex_ptr vector[k] of scalar products (<v_i,r>...)
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgesellpmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  blocksize,
magma_int_t  slices,
magma_int_t  alignment,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaIndex_ptr  drowptr,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes y = alpha * A^t * x + beta * y on the GPU.

Input format is SELLP.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]blocksizemagma_int_t number of rows in one ELL-slice
[in]slicesmagma_int_t number of slices in matrix
[in]alignmentmagma_int_t number of threads assigned to one row
[in]alphamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in SELLP
[in]dcolindmagmaIndex_ptr columnindices of A in SELLP
[in]drowptrmagmaIndex_ptr rowpointer of SELLP
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cgesellcmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  blocksize,
magma_int_t  slices,
magma_int_t  alignment,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaIndex_ptr  drowptr,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes y = alpha * A^t * x + beta * y on the GPU.

Input format is SELLC/SELLP.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]blocksizemagma_int_t number of rows in one ELL-slice
[in]slicesmagma_int_t number of slices in matrix
[in]alignmentmagma_int_t number of threads assigned to one row (=1)
[in]alphamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in SELLC/P
[in]dcolindmagmaIndex_ptr columnindices of A in SELLC/P
[in]drowptrmagmaIndex_ptr rowpointer of SELLP
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmdotc_shfl ( magma_int_t  n,
magma_int_t  k,
magmaFloatComplex_ptr  v,
magmaFloatComplex_ptr  r,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of vectors v_i such that.

skp = ( <v_0,r>, <v_1,r>, .. )

Returns the vector skp.

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

vectors v_i

Parameters
[in]vmagmaFloatComplex_ptr v = (v_0 .. v_i.. v_k)
[in]rmagmaFloatComplex_ptr r
[in]d1magmaFloatComplex_ptr workspace
[in]d2magmaFloatComplex_ptr workspace
[out]skpmagmaFloatComplex_ptr vector[k] of scalar products (<v_i,r>...)
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmdotc1 ( magma_int_t  n,
magmaFloatComplex_ptr  v0,
magmaFloatComplex_ptr  w0,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 1 vectors such that.

skp[0] = [ <v_0,w_0> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaFloatComplex_ptr input vector
[in]w0magmaFloatComplex_ptr input vector
[in]d1magmaFloatComplex_ptr workspace
[in]d2magmaFloatComplex_ptr workspace
[out]skpmagmaFloatComplex_ptr vector[4] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmdotc2 ( magma_int_t  n,
magmaFloatComplex_ptr  v0,
magmaFloatComplex_ptr  w0,
magmaFloatComplex_ptr  v1,
magmaFloatComplex_ptr  w1,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 2 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaFloatComplex_ptr input vector
[in]w0magmaFloatComplex_ptr input vector
[in]v1magmaFloatComplex_ptr input vector
[in]w1magmaFloatComplex_ptr input vector
[in]d1magmaFloatComplex_ptr workspace
[in]d2magmaFloatComplex_ptr workspace
[out]skpmagmaFloatComplex_ptr vector[3] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmdotc3 ( magma_int_t  n,
magmaFloatComplex_ptr  v0,
magmaFloatComplex_ptr  w0,
magmaFloatComplex_ptr  v1,
magmaFloatComplex_ptr  w1,
magmaFloatComplex_ptr  v2,
magmaFloatComplex_ptr  w2,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 4 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1>, <v_2,w_2>, <v3,w_3> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaFloatComplex_ptr input vector
[in]w0magmaFloatComplex_ptr input vector
[in]v1magmaFloatComplex_ptr input vector
[in]w1magmaFloatComplex_ptr input vector
[in]v2magmaFloatComplex_ptr input vector
[in]w2magmaFloatComplex_ptr input vector
[in]d1magmaFloatComplex_ptr workspace
[in]d2magmaFloatComplex_ptr workspace
[out]skpmagmaFloatComplex_ptr vector[3] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmdotc4 ( magma_int_t  n,
magmaFloatComplex_ptr  v0,
magmaFloatComplex_ptr  w0,
magmaFloatComplex_ptr  v1,
magmaFloatComplex_ptr  w1,
magmaFloatComplex_ptr  v2,
magmaFloatComplex_ptr  w2,
magmaFloatComplex_ptr  v3,
magmaFloatComplex_ptr  w3,
magmaFloatComplex_ptr  d1,
magmaFloatComplex_ptr  d2,
magmaFloatComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 4 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1>, <v_2,w_2>, <v3,w_3> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaFloatComplex_ptr input vector
[in]w0magmaFloatComplex_ptr input vector
[in]v1magmaFloatComplex_ptr input vector
[in]w1magmaFloatComplex_ptr input vector
[in]v2magmaFloatComplex_ptr input vector
[in]w2magmaFloatComplex_ptr input vector
[in]v3magmaFloatComplex_ptr input vector
[in]w3magmaFloatComplex_ptr input vector
[in]d1magmaFloatComplex_ptr workspace
[in]d2magmaFloatComplex_ptr workspace
[out]skpmagmaFloatComplex_ptr vector[4] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmgecsrmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  num_vecs,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  drowptr,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.

Input format is CSR.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]num_vecsmama_int_t number of vectors
[in]alphamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in CSR
[in]drowptrmagmaIndex_ptr rowpointer of A in CSR
[in]dcolindmagmaIndex_ptr columnindices of A in CSR
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmgeellmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  num_vecs,
magma_int_t  nnz_per_row,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.

Input format is ELLPACK.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]num_vecsmama_int_t number of vectors
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in ELLPACK
[in]dcolindmagmaIndex_ptr columnindices of A in ELLPACK
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmgeelltmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  num_vecs,
magma_int_t  nnz_per_row,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.

Input format is ELL.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]num_vecsmama_int_t number of vectors
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in ELL
[in]dcolindmagmaIndex_ptr columnindices of A in ELL
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_cmgesellpmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  num_vecs,
magma_int_t  blocksize,
magma_int_t  slices,
magma_int_t  alignment,
magmaFloatComplex  alpha,
magmaFloatComplex_ptr  dval,
magmaIndex_ptr  dcolind,
magmaIndex_ptr  drowptr,
magmaFloatComplex_ptr  dx,
magmaFloatComplex  beta,
magmaFloatComplex_ptr  dy,
magma_queue_t  queue 
)

This routine computes Y = alpha * A^t * X + beta * Y on the GPU.

Input format is SELLP. Note, that the input format for X is row-major while the output format for Y is column major!

Parameters
[in]transAmagma_trans_t transpose A?
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]num_vecsmagma_int_t number of columns in X and Y
[in]blocksizemagma_int_t number of rows in one ELL-slice
[in]slicesmagma_int_t number of slices in matrix
[in]alignmentmagma_int_t number of threads assigned to one row
[in]alphamagmaFloatComplex scalar multiplier
[in]dvalmagmaFloatComplex_ptr array containing values of A in SELLP
[in]dcolindmagmaIndex_ptr columnindices of A in SELLP
[in]drowptrmagmaIndex_ptr rowpointer of SELLP
[in]dxmagmaFloatComplex_ptr input vector x
[in]betamagmaFloatComplex scalar multiplier
[out]dymagmaFloatComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmdotc1 ( magma_int_t  n,
magmaDouble_ptr  v0,
magmaDouble_ptr  w0,
magmaDouble_ptr  d1,
magmaDouble_ptr  d2,
magmaDouble_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 1 vectors such that.

skp[0] = [ <v_0,w_0> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaDouble_ptr input vector
[in]w0magmaDouble_ptr input vector
[in]d1magmaDouble_ptr workspace
[in]d2magmaDouble_ptr workspace
[out]skpmagmaDouble_ptr vector[4] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmdotc2 ( magma_int_t  n,
magmaDouble_ptr  v0,
magmaDouble_ptr  w0,
magmaDouble_ptr  v1,
magmaDouble_ptr  w1,
magmaDouble_ptr  d1,
magmaDouble_ptr  d2,
magmaDouble_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 2 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaDouble_ptr input vector
[in]w0magmaDouble_ptr input vector
[in]v1magmaDouble_ptr input vector
[in]w1magmaDouble_ptr input vector
[in]d1magmaDouble_ptr workspace
[in]d2magmaDouble_ptr workspace
[out]skpmagmaDouble_ptr vector[3] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_dmdotc3 ( magma_int_t  n,
magmaDouble_ptr  v0,
magmaDouble_ptr  w0,
magmaDouble_ptr  v1,
magmaDouble_ptr  w1,
magmaDouble_ptr  v2,
magmaDouble_ptr  w2,
magmaDouble_ptr  d1,
magmaDouble_ptr  d2,
magmaDouble_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 4 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1>, <v_2,w_2>, <v3,w_3> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaDouble_ptr input vector
[in]w0magmaDouble_ptr input vector
[in]v1magmaDouble_ptr input vector
[in]w1magmaDouble_ptr input vector
[in]v2magmaDouble_ptr input vector
[in]w2magmaDouble_ptr input vector
[in]d1magmaDouble_ptr workspace
[in]d2magmaDouble_ptr workspace
[out]skpmagmaDouble_ptr vector[3] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_c_spmv ( magmaFloatComplex  alpha,
magma_c_matrix  A,
magma_c_matrix  x,
magmaFloatComplex  beta,
magma_c_matrix  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 * x + beta * y.

Parameters
[in]alphamagmaFloatComplex scalar alpha
[in]Amagma_c_matrix sparse matrix A
[in]xmagma_c_matrix input vector x
[in]betamagmaFloatComplex scalar beta
[out]ymagma_c_matrix output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_c_spmv_shift ( magmaFloatComplex  alpha,
magma_c_matrix  A,
magmaFloatComplex  lambda,
magma_c_matrix  x,
magmaFloatComplex  beta,
magma_int_t  offset,
magma_int_t  blocksize,
magma_index_t *  add_rows,
magma_c_matrix  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
alphamagmaFloatComplex scalar alpha
Amagma_c_matrix sparse matrix A
lambdamagmaFloatComplex scalar lambda
xmagma_c_matrix input vector x
betamagmaFloatComplex 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_c_matrix output vector y
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_c_spmm ( magmaFloatComplex  alpha,
magma_c_matrix  A,
magma_c_matrix  B,
magma_c_matrix *  C,
magma_queue_t  queue 
)

For a given input matrix A and B and scalar alpha, the wrapper determines the suitable SpMV computing C = alpha * A * B.

Parameters
[in]alphamagmaFloatComplex scalar alpha
[in]Amagma_c_matrix sparse matrix A
[in]Bmagma_c_matrix sparse matrix C
[out]Cmagma_c_matrix * outpur sparse matrix C
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_ccuspaxpy ( magmaFloatComplex *  alpha,
magma_c_matrix  A,
magmaFloatComplex *  beta,
magma_c_matrix  B,
magma_c_matrix *  AB,
magma_queue_t  queue 
)

This is an interface to the cuSPARSE routine csrgeam computing the sum of two sparse matrices stored in csr format:

C = alpha * A + beta * B
Parameters
[in]alphamagmaFloatComplex* scalar
[in]Amagma_c_matrix input matrix
[in]betamagmaFloatComplex* scalar
[in]Bmagma_c_matrix input matrix
[out]ABmagma_c_matrix* output matrix AB = alpha * A + beta * B
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_ccuspmm ( magma_c_matrix  A,
magma_c_matrix  B,
magma_c_matrix *  AB,
magma_queue_t  queue 
)

This is an interface to the cuSPARSE routine csrmm computing the product of two sparse matrices stored in csr format.

Parameters
[in]Amagma_c_matrix input matrix
[in]Bmagma_c_matrix input matrix
[out]ABmagma_c_matrix* output matrix AB = A * B
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_smdotc1 ( magma_int_t  n,
magmaFloat_ptr  v0,
magmaFloat_ptr  w0,
magmaFloat_ptr  d1,
magmaFloat_ptr  d2,
magmaFloat_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 1 vectors such that.

skp[0] = [ <v_0,w_0> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaFloat_ptr input vector
[in]w0magmaFloat_ptr input vector
[in]d1magmaFloat_ptr workspace
[in]d2magmaFloat_ptr workspace
[out]skpmagmaFloat_ptr vector[4] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_smdotc2 ( magma_int_t  n,
magmaFloat_ptr  v0,
magmaFloat_ptr  w0,
magmaFloat_ptr  v1,
magmaFloat_ptr  w1,
magmaFloat_ptr  d1,
magmaFloat_ptr  d2,
magmaFloat_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 2 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaFloat_ptr input vector
[in]w0magmaFloat_ptr input vector
[in]v1magmaFloat_ptr input vector
[in]w1magmaFloat_ptr input vector
[in]d1magmaFloat_ptr workspace
[in]d2magmaFloat_ptr workspace
[out]skpmagmaFloat_ptr vector[3] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_smdotc3 ( magma_int_t  n,
magmaFloat_ptr  v0,
magmaFloat_ptr  w0,
magmaFloat_ptr  v1,
magmaFloat_ptr  w1,
magmaFloat_ptr  v2,
magmaFloat_ptr  w2,
magmaFloat_ptr  d1,
magmaFloat_ptr  d2,
magmaFloat_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 4 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1>, <v_2,w_2>, <v3,w_3> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaFloat_ptr input vector
[in]w0magmaFloat_ptr input vector
[in]v1magmaFloat_ptr input vector
[in]w1magmaFloat_ptr input vector
[in]v2magmaFloat_ptr input vector
[in]w2magmaFloat_ptr input vector
[in]d1magmaFloat_ptr workspace
[in]d2magmaFloat_ptr workspace
[out]skpmagmaFloat_ptr vector[3] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_zmdotc1 ( magma_int_t  n,
magmaDoubleComplex_ptr  v0,
magmaDoubleComplex_ptr  w0,
magmaDoubleComplex_ptr  d1,
magmaDoubleComplex_ptr  d2,
magmaDoubleComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 1 vectors such that.

skp[0] = [ <v_0,w_0> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaDoubleComplex_ptr input vector
[in]w0magmaDoubleComplex_ptr input vector
[in]d1magmaDoubleComplex_ptr workspace
[in]d2magmaDoubleComplex_ptr workspace
[out]skpmagmaDoubleComplex_ptr vector[4] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_zmdotc2 ( magma_int_t  n,
magmaDoubleComplex_ptr  v0,
magmaDoubleComplex_ptr  w0,
magmaDoubleComplex_ptr  v1,
magmaDoubleComplex_ptr  w1,
magmaDoubleComplex_ptr  d1,
magmaDoubleComplex_ptr  d2,
magmaDoubleComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 2 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaDoubleComplex_ptr input vector
[in]w0magmaDoubleComplex_ptr input vector
[in]v1magmaDoubleComplex_ptr input vector
[in]w1magmaDoubleComplex_ptr input vector
[in]d1magmaDoubleComplex_ptr workspace
[in]d2magmaDoubleComplex_ptr workspace
[out]skpmagmaDoubleComplex_ptr vector[3] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_zmdotc3 ( magma_int_t  n,
magmaDoubleComplex_ptr  v0,
magmaDoubleComplex_ptr  w0,
magmaDoubleComplex_ptr  v1,
magmaDoubleComplex_ptr  w1,
magmaDoubleComplex_ptr  v2,
magmaDoubleComplex_ptr  w2,
magmaDoubleComplex_ptr  d1,
magmaDoubleComplex_ptr  d2,
magmaDoubleComplex_ptr  skp,
magma_queue_t  queue 
)

Computes the scalar product of a set of 4 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1>, <v_2,w_2>, <v3,w_3> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaDoubleComplex_ptr input vector
[in]w0magmaDoubleComplex_ptr input vector
[in]v1magmaDoubleComplex_ptr input vector
[in]w1magmaDoubleComplex_ptr input vector
[in]v2magmaDoubleComplex_ptr input vector
[in]w2magmaDoubleComplex_ptr input vector
[in]d1magmaDoubleComplex_ptr workspace
[in]d2magmaDoubleComplex_ptr workspace
[out]skpmagmaDoubleComplex_ptr vector[3] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.