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

Functions

magma_int_t magma_scustomicsetup (magma_s_matrix A, magma_s_matrix b, magma_s_preconditioner *precond, magma_queue_t queue)
 Reads in an Incomplete Cholesky preconditioner. More...
 
magma_int_t magma_scustomilusetup (magma_s_matrix A, magma_s_matrix b, magma_s_preconditioner *precond, magma_queue_t queue)
 Reads in an Incomplete LU preconditioner. More...
 
magma_int_t magma_siluisaisetup (magma_s_matrix A, magma_s_matrix b, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares Incomplete LU preconditioner using a sparse approximate inverse instead of sparse triangular solves. More...
 
magma_int_t magma_siluisaisetup_t (magma_s_matrix A, magma_s_matrix b, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares Incomplete LU preconditioner using a sparse approximate inverse instead of sparse triangular solves. More...
 
magma_int_t magma_sisai_l (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Left-hand-side application of ISAI preconditioner. More...
 
magma_int_t magma_sisai_r (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Right-hand-side application of ISAI preconditioner. More...
 
magma_int_t magma_sisai_l_t (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Left-hand-side application of ISAI preconditioner. More...
 
magma_int_t magma_sisai_r_t (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Right-hand-side application of ISAI preconditioner. More...
 
magma_int_t magma_siluisaisetup_lower (magma_s_matrix A, magma_s_matrix S, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares Incomplete LU preconditioner using a sparse approximate inverse instead of sparse triangular solves. More...
 
magma_int_t magma_siluisaisetup_upper (magma_s_matrix A, magma_s_matrix S, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares Incomplete LU preconditioner using a sparse approximate inverse instead of sparse triangular solves. More...
 
magma_int_t magma_sparict (magma_s_matrix A, magma_s_matrix b, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares the iterative threshold Incomplete Cholesky preconditioner. More...
 
magma_int_t magma_sparilut (magma_s_matrix A, magma_s_matrix b, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares the iterative threshold Incomplete LU preconditioner. More...
 
magma_int_t magma_sicisaisetup (magma_s_matrix A, magma_s_matrix b, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares Incomplete Cholesky preconditioner using a sparse approximate inverse instead of sparse triangular solves. More...
 
magma_int_t magma_scumilusetup (magma_s_matrix A, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares the ILU preconditioner via the cuSPARSE. More...
 
magma_int_t magma_scumilusetup_transpose (magma_s_matrix A, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares the ILU transpose preconditioner via the cuSPARSE. More...
 
magma_int_t magma_scumilugeneratesolverinfo (magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares the ILU triangular solves via cuSPARSE using an ILU factorization matrix stored either in precond->M or on the device as precond->L and precond->U. More...
 
magma_int_t magma_sapplycumilu_l (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Performs the left triangular solves using the ILU preconditioner. More...
 
magma_int_t magma_sapplycumilu_l_transpose (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Performs the left triangular solves using the transpose ILU preconditioner. More...
 
magma_int_t magma_sapplycumilu_r (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Performs the right triangular solves using the ILU preconditioner. More...
 
magma_int_t magma_sapplycumilu_r_transpose (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Performs the right triangular solves using the transpose ILU preconditioner. More...
 
magma_int_t magma_sparilusetup (magma_s_matrix A, magma_s_matrix b, magma_s_preconditioner *precond, magma_queue_t queue)
 Prepares the ILU preconditioner via the iterative ILU iteration. More...
 
magma_int_t magma_sapplyiteric_l (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Performs the left triangular solves using the IC preconditioner via Jacobi. More...
 
magma_int_t magma_sapplyiteric_r (magma_s_matrix b, magma_s_matrix *x, magma_s_preconditioner *precond, magma_queue_t queue)
 Performs the right triangular solves using the IC preconditioner via Jacobi. More...
 

Detailed Description

Function Documentation

magma_int_t magma_scustomicsetup ( magma_s_matrix  A,
magma_s_matrix  b,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Reads in an Incomplete Cholesky preconditioner.

Parameters
[in]Amagma_s_matrix input matrix A
[in]bmagma_s_matrix input RHS b
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_scustomilusetup ( magma_s_matrix  A,
magma_s_matrix  b,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Reads in an Incomplete LU preconditioner.

Parameters
[in]Amagma_s_matrix input matrix A
[in]bmagma_s_matrix input RHS b
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_siluisaisetup ( magma_s_matrix  A,
magma_s_matrix  b,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares Incomplete LU preconditioner using a sparse approximate inverse instead of sparse triangular solves.

Parameters
[in]Amagma_s_matrix input matrix A
[in]bmagma_s_matrix input RHS b
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_siluisaisetup_t ( magma_s_matrix  A,
magma_s_matrix  b,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares Incomplete LU preconditioner using a sparse approximate inverse instead of sparse triangular solves.

This is the transpose preconditioner setup needed e.g. for BiCG, QMR, LSQR...

Parameters
[in]Amagma_s_matrix input matrix A
[in]bmagma_s_matrix input RHS b
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sisai_l ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Left-hand-side application of ISAI preconditioner.

Parameters
[in]bmagma_s_matrix input RHS b
[in,out]xmagma_s_matrix solution x
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sisai_r ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Right-hand-side application of ISAI preconditioner.

Parameters
[in]bmagma_s_matrix input RHS b
[in,out]xmagma_s_matrix solution x
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sisai_l_t ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Left-hand-side application of ISAI preconditioner.

Transpose.

Parameters
[in]bmagma_s_matrix input RHS b
[in,out]xmagma_s_matrix solution x
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sisai_r_t ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Right-hand-side application of ISAI preconditioner.

Transpose.

Parameters
[in]bmagma_s_matrix input RHS b
[in,out]xmagma_s_matrix solution x
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_siluisaisetup_lower ( magma_s_matrix  A,
magma_s_matrix  S,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares Incomplete LU preconditioner using a sparse approximate inverse instead of sparse triangular solves.

This routine only handles the lower triangular part.

Parameters
[in]Amagma_s_matrix input matrix A
[in]Smagma_s_matrix pattern for the ISAI preconditioner
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_siluisaisetup_upper ( magma_s_matrix  A,
magma_s_matrix  S,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares Incomplete LU preconditioner using a sparse approximate inverse instead of sparse triangular solves.

This routine only handles the upper triangular part.

Parameters
[in]Amagma_s_matrix input matrix A
[in]Smagma_s_matrix pattern for the ISAI preconditioner
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sparict ( magma_s_matrix  A,
magma_s_matrix  b,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares the iterative threshold Incomplete Cholesky preconditioner.

The strategy is interleaving a parallel fixed-point iteration that approximates an incomplete factorization for a given nonzero pattern with a procedure that adaptively changes the pattern. Much of this new algorithm has fine-grained parallelism, and we show that it can efficiently exploit the compute power of shared memory architectures.

This is the routine used in the publication by Anzt, Chow, Dongarra: ''ParILUT - A new parallel threshold ILU factorization'' submitted to SIAM SISC in 2016.

This function requires OpenMP, and is only available if OpenMP is activated.

Parameters
[in]Amagma_s_matrix input matrix A
[in]bmagma_s_matrix input RHS b
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sparilut ( magma_s_matrix  A,
magma_s_matrix  b,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares the iterative threshold Incomplete LU preconditioner.

The strategy is interleaving a parallel fixed-point iteration that approximates an incomplete factorization for a given nonzero pattern with a procedure that adaptively changes the pattern. Much of this new algorithm has fine-grained parallelism, and we show that it can efficiently exploit the compute power of shared memory architectures.

This is the routine used in the publication by Anzt, Chow, Dongarra: ''ParILUT - A new parallel threshold ILU factorization'' submitted to SIAM SISC in 2017.

This function requires OpenMP, and is only available if OpenMP is activated.

The parameter list is:

precond.sweeps : number of ParILUT steps precond.atol : absolute fill ratio (1.0 keeps nnz constant) precond.rtol : how many candidates are added to the sparsity pattern 1.0 one per row < 1.0 a fraction of those > 1.0 all candidates

Parameters
[in]Amagma_s_matrix input matrix A
[in]bmagma_s_matrix input RHS b
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sicisaisetup ( magma_s_matrix  A,
magma_s_matrix  b,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares Incomplete Cholesky preconditioner using a sparse approximate inverse instead of sparse triangular solves.

This is the symmetric variant of sgeisai.cpp.

Parameters
[in]Amagma_s_matrix input matrix A
[in]bmagma_s_matrix input RHS b
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_scumilusetup ( magma_s_matrix  A,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares the ILU preconditioner via the cuSPARSE.

Parameters
[in]Amagma_s_matrix input matrix A
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_scumilusetup_transpose ( magma_s_matrix  A,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares the ILU transpose preconditioner via the cuSPARSE.

Parameters
[in]Amagma_s_matrix input matrix A
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_scumilugeneratesolverinfo ( magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares the ILU triangular solves via cuSPARSE using an ILU factorization matrix stored either in precond->M or on the device as precond->L and precond->U.

Parameters
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sapplycumilu_l ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Performs the left triangular solves using the ILU preconditioner.

Parameters
[in]bmagma_s_matrix RHS
[in,out]xmagma_s_matrix* vector to precondition
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sapplycumilu_l_transpose ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Performs the left triangular solves using the transpose ILU preconditioner.

Parameters
[in]bmagma_s_matrix RHS
[in,out]xmagma_s_matrix* vector to precondition
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sapplycumilu_r ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Performs the right triangular solves using the ILU preconditioner.

Parameters
[in]bmagma_s_matrix RHS
[in,out]xmagma_s_matrix* vector to precondition
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sapplycumilu_r_transpose ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Performs the right triangular solves using the transpose ILU preconditioner.

Parameters
[in]bmagma_s_matrix RHS
[in,out]xmagma_s_matrix* vector to precondition
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sparilusetup ( magma_s_matrix  A,
magma_s_matrix  b,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Prepares the ILU preconditioner via the iterative ILU iteration.

Parameters
[in]Amagma_s_matrix input matrix A
[in]bmagma_s_matrix input RHS b
[in,out]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sapplyiteric_l ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Performs the left triangular solves using the IC preconditioner via Jacobi.

Parameters
[in]bmagma_s_matrix RHS
[out]xmagma_s_matrix* vector to precondition
[in]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.
magma_int_t magma_sapplyiteric_r ( magma_s_matrix  b,
magma_s_matrix *  x,
magma_s_preconditioner *  precond,
magma_queue_t  queue 
)

Performs the right triangular solves using the IC preconditioner via Jacobi.

Parameters
[in]bmagma_s_matrix RHS
[out]xmagma_s_matrix* vector to precondition
[in]precondmagma_s_preconditioner* preconditioner parameters
[in]queuemagma_queue_t Queue to execute in.