PaStiX Handbook
6.2.1
|
This group describes all the routines to apply iterative refinement on the system. More...
Modules | |
Refinement internal function documentation | |
Functions | |
int | pastix_subtask_refine (pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t nrhs, const void *b, pastix_int_t ldb, void *x, pastix_int_t ldx) |
Perform the iterative refinement without apply the permutations. More... | |
pastix_int_t | d_bicgstab_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | s_bicgstab_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | z_bicgstab_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | c_bicgstab_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | d_gmres_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | s_gmres_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | z_gmres_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | c_gmres_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | d_grad_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | s_grad_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | z_grad_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | c_grad_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | d_pivot_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | s_pivot_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | z_pivot_smp (pastix_data_t *pastix_data, void *x, void *b) |
pastix_int_t | c_pivot_smp (pastix_data_t *pastix_data, void *x, void *b) |
This group describes all the routines to apply iterative refinement on the system.
int pastix_subtask_refine | ( | pastix_data_t * | pastix_data, |
pastix_int_t | n, | ||
pastix_int_t | nrhs, | ||
const void * | b, | ||
pastix_int_t | ldb, | ||
void * | x, | ||
pastix_int_t | ldx | ||
) |
Perform the iterative refinement without apply the permutations.
This routine is affected by the following parameters: IPARM_REFINEMENT, DPARM_EPSILON_REFINEMENT
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[in] | n | The size of system to solve, and the number of rows of both matrices b and x. |
[in] | nrhs | The number of right hand side members, and the number of columns of b and x. |
[in,out] | b | The right hand side matrix of size ldb-by-nrhs. B is noted as inout, as permutation might be performed on the matrix. On exit, the matrix is restored as it was on entry. |
[in] | ldb | The leading dimension of the matrix b. ldb >= n. |
[in,out] | x | The matrix x of size ldx-by-nrhs. On entry, the initial guess x0 for the refinement step, that may be the solution returned by the solve step or any other initial guess. On exit, contains the final solution after the iterative refinement. |
[in] | ldx | The leading dimension of the matrix x. ldx >= n. |
PASTIX_SUCCESS | on successful exit, |
PASTIX_ERR_BADPARAMETER | if one parameter is incorrect, |
Definition at line 115 of file pastix_task_refine.c.
References IPARM_SCHUR_SOLV_MODE.
pastix_int_t d_bicgstab_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
d_bicgstab_smp - Function computing bicgstab iterative refinement.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file d_refine_bicgstab.c.
References d_refine_init().
pastix_int_t s_bicgstab_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
s_bicgstab_smp - Function computing bicgstab iterative refinement.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file s_refine_bicgstab.c.
References s_refine_init().
pastix_int_t z_bicgstab_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
z_bicgstab_smp - Function computing bicgstab iterative refinement.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file z_refine_bicgstab.c.
References z_refine_init().
pastix_int_t c_bicgstab_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
c_bicgstab_smp - Function computing bicgstab iterative refinement.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file c_refine_bicgstab.c.
References c_refine_init().
pastix_int_t d_gmres_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
d_gmres_smp - Function computing GMRES iterative refinement.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
H stores the h_{i,j} elements of the upper hessenberg matrix H (See Alg. 9.5 p 270) V stores the v_{i} vectors W stores the M^{-1} v_{i} vectors to avoid the application of the preconditioner on the output result (See line 11 of Alg 9.5)
If no preconditioner is applied, or the user wants to save memory, W stores only temporarily one vector for the Ax product (ldw is set to 0 to reuse the same vector at each iteration)
Algorithm from Iterative Methods for Sparse Linear systems, Y. Saad, Second Ed. p267-273
The version implemented is the Right preconditioned algorithm.
Compute x_m = x_0 + M^{-1} V_m y_m = x_0 + W_m y_m
Since we saved memory, we do not have (M^{-1} V_m) stored, thus we compute: w = V_m y_m w = M^{-1} (V_m y_m) x = x0 + (M^{-1} (V_m y_m))
Since we did not saved memory, we do have (M^{-1} V_m) stored in W_m if precond is true, thus we compute: x = x0 + W_m y_m, if precond x = x0 + V_m y_m, if not precond
Exit only if maximum number of iteration is reached. Exit on residual if checked at the beginning of the outer loop to be sure that the final residual of Ax-b is equal to the estimator computed within the inner loop.
Definition at line 48 of file d_refine_gmres.c.
References d_refine_init(), DPARM_EPSILON_REFINEMENT, IPARM_GMRES_IM, and IPARM_ITERMAX.
pastix_int_t s_gmres_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
s_gmres_smp - Function computing GMRES iterative refinement.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
H stores the h_{i,j} elements of the upper hessenberg matrix H (See Alg. 9.5 p 270) V stores the v_{i} vectors W stores the M^{-1} v_{i} vectors to avoid the application of the preconditioner on the output result (See line 11 of Alg 9.5)
If no preconditioner is applied, or the user wants to save memory, W stores only temporarily one vector for the Ax product (ldw is set to 0 to reuse the same vector at each iteration)
Algorithm from Iterative Methods for Sparse Linear systems, Y. Saad, Second Ed. p267-273
The version implemented is the Right preconditioned algorithm.
Compute x_m = x_0 + M^{-1} V_m y_m = x_0 + W_m y_m
Since we saved memory, we do not have (M^{-1} V_m) stored, thus we compute: w = V_m y_m w = M^{-1} (V_m y_m) x = x0 + (M^{-1} (V_m y_m))
Since we did not saved memory, we do have (M^{-1} V_m) stored in W_m if precond is true, thus we compute: x = x0 + W_m y_m, if precond x = x0 + V_m y_m, if not precond
Exit only if maximum number of iteration is reached. Exit on residual if checked at the beginning of the outer loop to be sure that the final residual of Ax-b is equal to the estimator computed within the inner loop.
Definition at line 48 of file s_refine_gmres.c.
References DPARM_EPSILON_REFINEMENT, IPARM_GMRES_IM, IPARM_ITERMAX, and s_refine_init().
pastix_int_t z_gmres_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
z_gmres_smp - Function computing GMRES iterative refinement.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
H stores the h_{i,j} elements of the upper hessenberg matrix H (See Alg. 9.5 p 270) V stores the v_{i} vectors W stores the M^{-1} v_{i} vectors to avoid the application of the preconditioner on the output result (See line 11 of Alg 9.5)
If no preconditioner is applied, or the user wants to save memory, W stores only temporarily one vector for the Ax product (ldw is set to 0 to reuse the same vector at each iteration)
Algorithm from Iterative Methods for Sparse Linear systems, Y. Saad, Second Ed. p267-273
The version implemented is the Right preconditioned algorithm.
Compute x_m = x_0 + M^{-1} V_m y_m = x_0 + W_m y_m
Since we saved memory, we do not have (M^{-1} V_m) stored, thus we compute: w = V_m y_m w = M^{-1} (V_m y_m) x = x0 + (M^{-1} (V_m y_m))
Since we did not saved memory, we do have (M^{-1} V_m) stored in W_m if precond is true, thus we compute: x = x0 + W_m y_m, if precond x = x0 + V_m y_m, if not precond
Exit only if maximum number of iteration is reached. Exit on residual if checked at the beginning of the outer loop to be sure that the final residual of Ax-b is equal to the estimator computed within the inner loop.
Definition at line 48 of file z_refine_gmres.c.
References DPARM_EPSILON_REFINEMENT, IPARM_GMRES_IM, IPARM_ITERMAX, and z_refine_init().
pastix_int_t c_gmres_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
c_gmres_smp - Function computing GMRES iterative refinement.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
H stores the h_{i,j} elements of the upper hessenberg matrix H (See Alg. 9.5 p 270) V stores the v_{i} vectors W stores the M^{-1} v_{i} vectors to avoid the application of the preconditioner on the output result (See line 11 of Alg 9.5)
If no preconditioner is applied, or the user wants to save memory, W stores only temporarily one vector for the Ax product (ldw is set to 0 to reuse the same vector at each iteration)
Algorithm from Iterative Methods for Sparse Linear systems, Y. Saad, Second Ed. p267-273
The version implemented is the Right preconditioned algorithm.
Compute x_m = x_0 + M^{-1} V_m y_m = x_0 + W_m y_m
Since we saved memory, we do not have (M^{-1} V_m) stored, thus we compute: w = V_m y_m w = M^{-1} (V_m y_m) x = x0 + (M^{-1} (V_m y_m))
Since we did not saved memory, we do have (M^{-1} V_m) stored in W_m if precond is true, thus we compute: x = x0 + W_m y_m, if precond x = x0 + V_m y_m, if not precond
Exit only if maximum number of iteration is reached. Exit on residual if checked at the beginning of the outer loop to be sure that the final residual of Ax-b is equal to the estimator computed within the inner loop.
Definition at line 48 of file c_refine_gmres.c.
References c_refine_init(), DPARM_EPSILON_REFINEMENT, IPARM_GMRES_IM, and IPARM_ITERMAX.
pastix_int_t d_grad_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
d_grad_smp - Refine the solution using conjugate gradian method.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file d_refine_grad.c.
References d_refine_init().
pastix_int_t s_grad_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
s_grad_smp - Refine the solution using conjugate gradian method.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file s_refine_grad.c.
References s_refine_init().
pastix_int_t z_grad_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
z_grad_smp - Refine the solution using conjugate gradian method.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file z_refine_grad.c.
References z_refine_init().
pastix_int_t c_grad_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
c_grad_smp - Refine the solution using conjugate gradian method.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file c_refine_grad.c.
References c_refine_init().
pastix_int_t d_pivot_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
d_pivot_smp - Refine the solution using static pivoting method.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file d_refine_pivot.c.
References d_refine_init().
pastix_int_t s_pivot_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
s_pivot_smp - Refine the solution using static pivoting method.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file s_refine_pivot.c.
References s_refine_init().
pastix_int_t z_pivot_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
z_pivot_smp - Refine the solution using static pivoting method.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file z_refine_pivot.c.
References z_refine_init().
pastix_int_t c_pivot_smp | ( | pastix_data_t * | pastix_data, |
void * | x, | ||
void * | b | ||
) |
c_pivot_smp - Refine the solution using static pivoting method.
[in] | pastix_data | The PaStiX data structure that describes the solver instance. |
[out] | x | The solution vector. |
[in] | b | The right hand side member (only one). |
Definition at line 48 of file c_refine_pivot.c.
References c_refine_init().