MAGMA  1.5.0
Matrix Algebra for GPU and Multicore Architectures
 All Functions Groups
double-complex precision

Functions

magma_int_t magma_zcuspmm (magma_z_sparse_matrix A, magma_z_sparse_matrix B, magma_z_sparse_matrix *AB)
 – MAGMA (version 1.5.0-beta3) – Univ. More...
 
magma_int_t magma_zgecsrmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_rowptr, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y)
 This routine computes y = alpha * A * x + beta * y on the GPU. More...
 
magma_int_t magma_zgecsrmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magmaDoubleComplex alpha, magmaDoubleComplex lambda, magmaDoubleComplex *d_val, magma_index_t *d_rowptr, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, int offset, int blocksize, magma_index_t *add_rows, magmaDoubleComplex *d_y)
 This routine computes y = alpha * ( A -lambda I ) * x + beta * y on the GPU. More...
 
magma_int_t magma_zgeellmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y)
 This routine computes y = alpha * A * x + beta * y on the GPU. More...
 
magma_int_t magma_zgeellmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex lambda, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, int offset, int blocksize, magma_index_t *add_rows, magmaDoubleComplex *d_y)
 This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU. More...
 
magma_int_t magma_zgeellrtmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magma_index_t *d_rowlength, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y, magma_int_t alignment, magma_int_t blocksize)
 This routine computes y = alpha * A * x + beta * y on the GPU. More...
 
magma_int_t magma_zgeelltmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex lambda, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, int offset, int blocksize, magma_index_t *add_rows, magmaDoubleComplex *d_y)
 This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU. More...
 
magma_int_t magma_zgesellpmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t blocksize, magma_int_t slices, magma_int_t alignment, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magma_index_t *d_rowptr, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y)
 This routine computes y = alpha * A^t * x + beta * y on the GPU. More...
 
magma_int_t magma_zgesellcmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t blocksize, magma_int_t slices, magma_int_t alignment, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magma_index_t *d_rowptr, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y)
 This routine computes y = alpha * A^t * x + beta * y on the GPU. More...
 
magma_int_t magma_zmdotc (int n, int k, magmaDoubleComplex *v, magmaDoubleComplex *r, magmaDoubleComplex *d1, magmaDoubleComplex *d2, magmaDoubleComplex *skp)
 Computes the scalar product of a set of vectors v_i such that. More...
 
magma_int_t magma_zmgecsrmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_rowptr, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y)
 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_zmgeellmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y)
 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_zmgeelltmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y)
 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_zmgesellpmv (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, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magma_index_t *d_rowptr, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y)
 This routine computes Y = alpha * A^t * X + beta * Y on the GPU. More...
 

Detailed Description

Function Documentation

magma_int_t magma_zcuspmm ( magma_z_sparse_matrix  A,
magma_z_sparse_matrix  B,
magma_z_sparse_matrix *  AB 
)

– MAGMA (version 1.5.0-beta3) – Univ.

of Tennessee, Knoxville Univ. of California, Berkeley Univ. of Colorado, Denver November 2011

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

Parameters
Amagma_z_sparse_matrix input matrix
Bmagma_z_sparse_matrix input matrix
ABmagma_z_sparse_matrix* output matrix AB = A * B
magma_int_t magma_zgecsrmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_rowptr,
magma_index_t *  d_colind,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y 
)

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

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

Parameters
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
alphamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in CSR
d_rowptrmagma_int_t* rowpointer of A in CSR
d_colindmagma_int_t* columnindices of A in CSR
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zgecsrmv_shift ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magmaDoubleComplex  alpha,
magmaDoubleComplex  lambda,
magmaDoubleComplex *  d_val,
magma_index_t *  d_rowptr,
magma_index_t *  d_colind,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
int  offset,
int  blocksize,
magma_index_t *  add_rows,
magmaDoubleComplex *  d_y 
)

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

It is a shifted version of the CSR-SpMV.

Parameters
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
alphamagmaDoubleComplex scalar multiplier
lambdamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in CSR
d_rowptrmagma_int_t* rowpointer of A in CSR
d_colindmagma_int_t* columnindices of A in CSR
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
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
d_ymagmaDoubleComplex* output vector y
magma_int_t magma_zgeellmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  nnz_per_row,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y 
)

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

Input format is ELLPACK.

Parameters
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
nnz_per_rowmagma_int_t number of elements in the longest row
alphamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in ELLPACK
d_colindmagma_int_t* columnindices of A in ELLPACK
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zgeellmv_shift ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  nnz_per_row,
magmaDoubleComplex  alpha,
magmaDoubleComplex  lambda,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
int  offset,
int  blocksize,
magma_index_t *  add_rows,
magmaDoubleComplex *  d_y 
)

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
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
nnz_per_rowmagma_int_t number of elements in the longest row
alphamagmaDoubleComplex scalar multiplier
lambdamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in ELLPACK
d_colindmagma_int_t* columnindices of A in ELLPACK
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
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
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zgeellrtmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  nnz_per_row,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magma_index_t *  d_rowlength,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y,
magma_int_t  alignment,
magma_int_t  blocksize 
)

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
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows
nmagma_int_t number of columns
nnz_per_rowmagma_int_t max number of nonzeros in a row
alphamagmaDoubleComplex scalar alpha
d_valmagmaDoubleComplex* val array
d_colindmagma_int_t* col indices
d_rowlengthmagma_int_t* number of elements in each row
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar beta
d_ymagmaDoubleComplex* output vector y
blocksizemagma_int_t threads per block
alignmentmagma_int_t threads assigned to each row
magma_int_t magma_zgeelltmv_shift ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  nnz_per_row,
magmaDoubleComplex  alpha,
magmaDoubleComplex  lambda,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
int  offset,
int  blocksize,
magma_index_t *  add_rows,
magmaDoubleComplex *  d_y 
)

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

Input format is ELL.

Parameters
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
nnz_per_rowmagma_int_t number of elements in the longest row
alphamagmaDoubleComplex scalar multiplier
lambdamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in ELL
d_colindmagma_int_t* columnindices of A in ELL
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
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
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zgesellcmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  blocksize,
magma_int_t  slices,
magma_int_t  alignment,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magma_index_t *  d_rowptr,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y 
)

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

Input format is SELLC/SELLP.

Parameters
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
blocksizemagma_int_t number of rows in one ELL-slice
slicesmagma_int_t number of slices in matrix
alignmentmagma_int_t number of threads assigned to one row (=1)
alphamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in SELLC/P
d_colindmagma_int_t* columnindices of A in SELLC/P
d_rowptrmagma_int_t* rowpointer of SELLP
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zgesellpmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  blocksize,
magma_int_t  slices,
magma_int_t  alignment,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magma_index_t *  d_rowptr,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y 
)

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

Input format is SELLP.

Parameters
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
blocksizemagma_int_t number of rows in one ELL-slice
slicesmagma_int_t number of slices in matrix
alignmentmagma_int_t number of threads assigned to one row
alphamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in SELLP
d_colindmagma_int_t* columnindices of A in SELLP
d_rowptrmagma_int_t* rowpointer of SELLP
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zmdotc ( int  n,
int  k,
magmaDoubleComplex *  v,
magmaDoubleComplex *  r,
magmaDoubleComplex *  d1,
magmaDoubleComplex *  d2,
magmaDoubleComplex *  skp 
)

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
nint length of v_i and r
kint

vectors v_i

Parameters
vmagmaDoubleComplex* v = (v_0 .. v_i.. v_k)
rmagmaDoubleComplex* r
d1magmaDoubleComplex* workspace
d2magmaDoubleComplex* workspace
skpmagmaDoubleComplex* vector[k] of scalar products (<v_i,r>...)
magma_int_t magma_zmgecsrmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  num_vecs,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_rowptr,
magma_index_t *  d_colind,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y 
)

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
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
num_vecsmama_int_t number of vectors
alphamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in CSR
d_rowptrmagma_int_t* rowpointer of A in CSR
d_colindmagma_int_t* columnindices of A in CSR
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zmgeellmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  num_vecs,
magma_int_t  nnz_per_row,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y 
)

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
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
num_vecsmama_int_t number of vectors
nnz_per_rowmagma_int_t number of elements in the longest row
alphamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in ELLPACK
d_colindmagma_int_t* columnindices of A in ELLPACK
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zmgeelltmv ( magma_trans_t  transA,
magma_int_t  m,
magma_int_t  n,
magma_int_t  num_vecs,
magma_int_t  nnz_per_row,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y 
)

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
transAmagma_trans_t transposition parameter for A
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
num_vecsmama_int_t number of vectors
nnz_per_rowmagma_int_t number of elements in the longest row
alphamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in ELL
d_colindmagma_int_t* columnindices of A in ELL
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
d_ymagmaDoubleComplex* input/output vector y
magma_int_t magma_zmgesellpmv ( 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,
magmaDoubleComplex  alpha,
magmaDoubleComplex *  d_val,
magma_index_t *  d_colind,
magma_index_t *  d_rowptr,
magmaDoubleComplex *  d_x,
magmaDoubleComplex  beta,
magmaDoubleComplex *  d_y 
)

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
transAmagma_trans_t transpose A?
mmagma_int_t number of rows in A
nmagma_int_t number of columns in A
num_vecsmagma_int_t number of columns in X and Y
blocksizemagma_int_t number of rows in one ELL-slice
slicesmagma_int_t number of slices in matrix
alignmentmagma_int_t number of threads assigned to one row
alphamagmaDoubleComplex scalar multiplier
d_valmagmaDoubleComplex* array containing values of A in SELLP
d_colindmagma_int_t* columnindices of A in SELLP
d_rowptrmagma_int_t* rowpointer of SELLP
d_xmagmaDoubleComplex* input vector x
betamagmaDoubleComplex scalar multiplier
d_ymagmaDoubleComplex* input/output vector y