|
PaStiX Handbook 6.4.0
|
Functions | |
| void | solve_blok_dtrsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, double *b, int ldb) |
| Apply a solve trsm update related to a diagonal block of the matrix A. | |
| void | solve_blok_dgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const double *B, pastix_int_t ldb, double *C, pastix_int_t ldc) |
| Apply a solve gemm update related to a single block of the matrix A. | |
| void | solve_cblk_dtrsmsp_forward (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b) |
| Apply a forward solve related to one cblk to all the right hand side. | |
| void | solve_cblk_dtrsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b) |
| Apply a backward solve related to one cblk to all the right hand side. | |
| void | solve_cblk_ddiag (const SolverCblk *cblk, const void *dataA, int nrhs, double *b, int ldb, double *work) |
| Apply the diagonal solve related to one cblk to all the right hand side. | |
| void | solve_blok_ctrsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, pastix_complex32_t *b, int ldb) |
| Apply a solve trsm update related to a diagonal block of the matrix A. | |
| void | solve_blok_cgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const pastix_complex32_t *B, pastix_int_t ldb, pastix_complex32_t *C, pastix_int_t ldc) |
| Apply a solve gemm update related to a single block of the matrix A. | |
| void | solve_cblk_ctrsmsp_forward (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b) |
| Apply a forward solve related to one cblk to all the right hand side. | |
| void | solve_cblk_ctrsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b) |
| Apply a backward solve related to one cblk to all the right hand side. | |
| void | solve_cblk_cdiag (const SolverCblk *cblk, const void *dataA, int nrhs, pastix_complex32_t *b, int ldb, pastix_complex32_t *work) |
| Apply the diagonal solve related to one cblk to all the right hand side. | |
| void | solve_blok_strsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, float *b, int ldb) |
| Apply a solve trsm update related to a diagonal block of the matrix A. | |
| void | solve_blok_sgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const float *B, pastix_int_t ldb, float *C, pastix_int_t ldc) |
| Apply a solve gemm update related to a single block of the matrix A. | |
| void | solve_cblk_strsmsp_forward (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b) |
| Apply a forward solve related to one cblk to all the right hand side. | |
| void | solve_cblk_strsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b) |
| Apply a backward solve related to one cblk to all the right hand side. | |
| void | solve_cblk_sdiag (const SolverCblk *cblk, const void *dataA, int nrhs, float *b, int ldb, float *work) |
| Apply the diagonal solve related to one cblk to all the right hand side. | |
| void | solve_blok_ztrsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, pastix_complex64_t *b, int ldb) |
| Apply a solve trsm update related to a diagonal block of the matrix A. | |
| void | solve_blok_zgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const pastix_complex64_t *B, pastix_int_t ldb, pastix_complex64_t *C, pastix_int_t ldc) |
| Apply a solve gemm update related to a single block of the matrix A. | |
| void | solve_cblk_ztrsmsp_forward (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b) |
| Apply a forward solve related to one cblk to all the right hand side. | |
| void | solve_cblk_ztrsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b) |
| Apply a backward solve related to one cblk to all the right hand side. | |
| void | solve_cblk_zdiag (const SolverCblk *cblk, const void *dataA, int nrhs, pastix_complex64_t *b, int ldb, pastix_complex64_t *work) |
| Apply the diagonal solve related to one cblk to all the right hand side. | |
This module contains all the kernel working on the solver matrix structure for the solve step.
| void solve_blok_dtrsm | ( | pastix_side_t | side, |
| pastix_uplo_t | uplo, | ||
| pastix_trans_t | trans, | ||
| pastix_diag_t | diag, | ||
| const SolverCblk * | cblk, | ||
| int | nrhs, | ||
| const void * | dataA, | ||
| double * | b, | ||
| int | ldb | ||
| ) |
Apply a solve trsm update related to a diagonal block of the matrix A.
| [in] | side | Specify the side parameter of the TRSM. |
| [in] | uplo | Specify the uplo parameter of the TRSM. |
| [in] | trans | Specify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixTrans. |
| [in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
| [in] | cblk | The cblk structure that corresponds to the A and B matrix. |
| [in] | nrhs | The number of right hand side. |
| [in] | dataA | The pointer to the correct representation of the data of A.
|
| [in,out] | b | The pointer to the matrix B, that is a portion of the right hand side to solve. |
| [in] | ldb | The leading dimension of B. |
Definition at line 76 of file solve_dtrsmsp.c.
References cblk_colnbr(), solver_cblk_s::cblktype, pastix_int_t, pastix_lrblock_s::rk, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by solve_cblk_dtrsmsp_backward(), and solve_cblk_dtrsmsp_forward().
| void solve_blok_dgemm | ( | pastix_side_t | side, |
| pastix_trans_t | trans, | ||
| pastix_int_t | nrhs, | ||
| const SolverCblk * | cblk, | ||
| const SolverBlok * | blok, | ||
| SolverCblk * | fcbk, | ||
| const void * | dataA, | ||
| const double * | B, | ||
| pastix_int_t | ldb, | ||
| double * | C, | ||
| pastix_int_t | ldc | ||
| ) |
Apply a solve gemm update related to a single block of the matrix A.
| [in] | side | Specify whether the blok parameter belongs to cblk (PastixLeft), or to fcbk (PastixRight). |
| [in] | trans | Specify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixTrans. |
| [in] | nrhs | The number of right hand side. |
| [in] | cblk | The cblk structure that corresponds to the B matrix. |
| [in] | blok | The blok structure that corresponds to the A matrix, and that belongs either to cblk or fcbk depending on the side parameter. |
| [in,out] | fcbk | The cblk structure that corresponds to the C matrix. |
| [in] | dataA | The pointer to the correct representation of the data of A.
|
| [in] | B | The pointer to the matrix B, that is a portion of the right hand side. |
| [in] | ldb | The leading dimension of B. |
| [in,out] | C | The pointer to the matrix C, that is the updated portion of the right hand side. |
| [in] | ldc | The leading dimension of C. |
Definition at line 160 of file solve_dtrsmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, pastix_int_t, PastixLeft, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by solve_cblk_dtrsmsp_backward(), and solve_cblk_dtrsmsp_forward().
| void solve_cblk_dtrsmsp_forward | ( | const args_solve_t * | enums, |
| SolverMatrix * | datacode, | ||
| const SolverCblk * | cblk, | ||
| pastix_rhs_t | rhsb | ||
| ) |
Apply a forward solve related to one cblk to all the right hand side.
| [in] | enums | Enums needed for the solve. |
| [in] | datacode | The SolverMatrix structure from PaStiX. |
| [in] | cblk | The cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
| [in,out] | rhsb | The pointer to the rhs data structure that holds the vectors of the right hand side. |
Definition at line 302 of file solve_dtrsmsp.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, blok_rownbr(), cblk_colnbr(), cblk_getdata(), cblk_rownbr(), pastix_rhs_s::cblkb, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, cpucblk_drelease_rhs_fwd_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, pastix_int_t, PastixKernelTRSMForw, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, PastixUpper, solve_blok_dgemm(), and solve_blok_dtrsm().
Referenced by sequential_dtrsm(), thread_dtrsm_dynamic(), and thread_dtrsm_static().
| void solve_cblk_dtrsmsp_backward | ( | const args_solve_t * | enums, |
| SolverMatrix * | datacode, | ||
| SolverCblk * | cblk, | ||
| pastix_rhs_t | rhsb | ||
| ) |
Apply a backward solve related to one cblk to all the right hand side.
| [in] | enums | Enums needed for the solve. |
| [in] | datacode | The SolverMatrix structure from PaStiX. |
| [in] | cblk | The cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
| [in,out] | rhsb | The pointer to the rhs data structure that holds the vectors of the right hand side. |
Definition at line 468 of file solve_dtrsmsp.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, blok_rownbr(), solver_matrix_s::bloktab, solver_cblk_s::brownum, solver_matrix_s::browtab, cblk_colnbr(), cblk_getdata(), cblk_rownbr(), pastix_rhs_s::cblkb, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, cpucblk_drelease_rhs_bwd_deps(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, pastix_int_t, PastixKernelTRSMBack, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixSchedSequential, PastixTrans, PastixUCoef, PastixUpper, solver_matrix_s::reqtab, solve_blok_dgemm(), and solve_blok_dtrsm().
Referenced by sequential_dtrsm(), thread_dtrsm_dynamic(), and thread_dtrsm_static().
| void solve_cblk_ddiag | ( | const SolverCblk * | cblk, |
| const void * | dataA, | ||
| int | nrhs, | ||
| double * | b, | ||
| int | ldb, | ||
| double * | work | ||
| ) |
Apply the diagonal solve related to one cblk to all the right hand side.
| [in] | cblk | The cblk structure to which diagonal block belongs to. |
| [in] | nrhs | The number of right hand side |
| [in,out] | b | The pointer to vectors of the right hand side |
| [in] | ldb | The leading dimension of b |
| [in,out] | work | Workspace to temporarily store the diagonal when multiple RHS are involved. Might be set to NULL for internal allocation on need. |
Definition at line 664 of file solve_dtrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by sequential_ddiag(), thread_ddiag_dynamic(), and thread_ddiag_static().
| void solve_blok_ctrsm | ( | pastix_side_t | side, |
| pastix_uplo_t | uplo, | ||
| pastix_trans_t | trans, | ||
| pastix_diag_t | diag, | ||
| const SolverCblk * | cblk, | ||
| int | nrhs, | ||
| const void * | dataA, | ||
| pastix_complex32_t * | b, | ||
| int | ldb | ||
| ) |
Apply a solve trsm update related to a diagonal block of the matrix A.
| [in] | side | Specify the side parameter of the TRSM. |
| [in] | uplo | Specify the uplo parameter of the TRSM. |
| [in] | trans | Specify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixConjTrans. |
| [in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
| [in] | cblk | The cblk structure that corresponds to the A and B matrix. |
| [in] | nrhs | The number of right hand side. |
| [in] | dataA | The pointer to the correct representation of the data of A.
|
| [in,out] | b | The pointer to the matrix B, that is a portion of the right hand side to solve. |
| [in] | ldb | The leading dimension of B. |
Definition at line 76 of file solve_ctrsmsp.c.
References cblk_colnbr(), solver_cblk_s::cblktype, pastix_int_t, pastix_lrblock_s::rk, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by solve_cblk_ctrsmsp_backward(), and solve_cblk_ctrsmsp_forward().
| void solve_blok_cgemm | ( | pastix_side_t | side, |
| pastix_trans_t | trans, | ||
| pastix_int_t | nrhs, | ||
| const SolverCblk * | cblk, | ||
| const SolverBlok * | blok, | ||
| SolverCblk * | fcbk, | ||
| const void * | dataA, | ||
| const pastix_complex32_t * | B, | ||
| pastix_int_t | ldb, | ||
| pastix_complex32_t * | C, | ||
| pastix_int_t | ldc | ||
| ) |
Apply a solve gemm update related to a single block of the matrix A.
| [in] | side | Specify whether the blok parameter belongs to cblk (PastixLeft), or to fcbk (PastixRight). |
| [in] | trans | Specify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixConjTrans. |
| [in] | nrhs | The number of right hand side. |
| [in] | cblk | The cblk structure that corresponds to the B matrix. |
| [in] | blok | The blok structure that corresponds to the A matrix, and that belongs either to cblk or fcbk depending on the side parameter. |
| [in,out] | fcbk | The cblk structure that corresponds to the C matrix. |
| [in] | dataA | The pointer to the correct representation of the data of A.
|
| [in] | B | The pointer to the matrix B, that is a portion of the right hand side. |
| [in] | ldb | The leading dimension of B. |
| [in,out] | C | The pointer to the matrix C, that is the updated portion of the right hand side. |
| [in] | ldc | The leading dimension of C. |
Definition at line 160 of file solve_ctrsmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, pastix_int_t, PastixLeft, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by solve_cblk_ctrsmsp_backward(), and solve_cblk_ctrsmsp_forward().
| void solve_cblk_ctrsmsp_forward | ( | const args_solve_t * | enums, |
| SolverMatrix * | datacode, | ||
| const SolverCblk * | cblk, | ||
| pastix_rhs_t | rhsb | ||
| ) |
Apply a forward solve related to one cblk to all the right hand side.
| [in] | enums | Enums needed for the solve. |
| [in] | datacode | The SolverMatrix structure from PaStiX. |
| [in] | cblk | The cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
| [in,out] | rhsb | The pointer to the rhs data structure that holds the vectors of the right hand side. |
Definition at line 302 of file solve_ctrsmsp.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, blok_rownbr(), cblk_colnbr(), cblk_getdata(), cblk_rownbr(), pastix_rhs_s::cblkb, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, cpucblk_crelease_rhs_fwd_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, pastix_int_t, PastixConjTrans, PastixKernelTRSMForw, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, PastixUpper, solve_blok_cgemm(), and solve_blok_ctrsm().
Referenced by sequential_ctrsm(), thread_ctrsm_dynamic(), and thread_ctrsm_static().
| void solve_cblk_ctrsmsp_backward | ( | const args_solve_t * | enums, |
| SolverMatrix * | datacode, | ||
| SolverCblk * | cblk, | ||
| pastix_rhs_t | rhsb | ||
| ) |
Apply a backward solve related to one cblk to all the right hand side.
| [in] | enums | Enums needed for the solve. |
| [in] | datacode | The SolverMatrix structure from PaStiX. |
| [in] | cblk | The cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
| [in,out] | rhsb | The pointer to the rhs data structure that holds the vectors of the right hand side. |
Definition at line 468 of file solve_ctrsmsp.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, blok_rownbr(), solver_matrix_s::bloktab, solver_cblk_s::brownum, solver_matrix_s::browtab, cblk_colnbr(), cblk_getdata(), cblk_rownbr(), pastix_rhs_s::cblkb, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, cpucblk_crelease_rhs_bwd_deps(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, pastix_int_t, PastixConjTrans, PastixKernelTRSMBack, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixSchedSequential, PastixTrans, PastixUCoef, PastixUpper, solver_matrix_s::reqtab, solve_blok_cgemm(), and solve_blok_ctrsm().
Referenced by sequential_ctrsm(), thread_ctrsm_dynamic(), and thread_ctrsm_static().
| void solve_cblk_cdiag | ( | const SolverCblk * | cblk, |
| const void * | dataA, | ||
| int | nrhs, | ||
| pastix_complex32_t * | b, | ||
| int | ldb, | ||
| pastix_complex32_t * | work | ||
| ) |
Apply the diagonal solve related to one cblk to all the right hand side.
| [in] | cblk | The cblk structure to which diagonal block belongs to. |
| [in] | nrhs | The number of right hand side |
| [in,out] | b | The pointer to vectors of the right hand side |
| [in] | ldb | The leading dimension of b |
| [in,out] | work | Workspace to temporarily store the diagonal when multiple RHS are involved. Might be set to NULL for internal allocation on need. |
Definition at line 664 of file solve_ctrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by sequential_cdiag(), thread_cdiag_dynamic(), and thread_cdiag_static().
| void solve_blok_strsm | ( | pastix_side_t | side, |
| pastix_uplo_t | uplo, | ||
| pastix_trans_t | trans, | ||
| pastix_diag_t | diag, | ||
| const SolverCblk * | cblk, | ||
| int | nrhs, | ||
| const void * | dataA, | ||
| float * | b, | ||
| int | ldb | ||
| ) |
Apply a solve trsm update related to a diagonal block of the matrix A.
| [in] | side | Specify the side parameter of the TRSM. |
| [in] | uplo | Specify the uplo parameter of the TRSM. |
| [in] | trans | Specify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixTrans. |
| [in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
| [in] | cblk | The cblk structure that corresponds to the A and B matrix. |
| [in] | nrhs | The number of right hand side. |
| [in] | dataA | The pointer to the correct representation of the data of A.
|
| [in,out] | b | The pointer to the matrix B, that is a portion of the right hand side to solve. |
| [in] | ldb | The leading dimension of B. |
Definition at line 76 of file solve_strsmsp.c.
References cblk_colnbr(), solver_cblk_s::cblktype, pastix_int_t, pastix_lrblock_s::rk, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by solve_cblk_strsmsp_backward(), and solve_cblk_strsmsp_forward().
| void solve_blok_sgemm | ( | pastix_side_t | side, |
| pastix_trans_t | trans, | ||
| pastix_int_t | nrhs, | ||
| const SolverCblk * | cblk, | ||
| const SolverBlok * | blok, | ||
| SolverCblk * | fcbk, | ||
| const void * | dataA, | ||
| const float * | B, | ||
| pastix_int_t | ldb, | ||
| float * | C, | ||
| pastix_int_t | ldc | ||
| ) |
Apply a solve gemm update related to a single block of the matrix A.
| [in] | side | Specify whether the blok parameter belongs to cblk (PastixLeft), or to fcbk (PastixRight). |
| [in] | trans | Specify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixTrans. |
| [in] | nrhs | The number of right hand side. |
| [in] | cblk | The cblk structure that corresponds to the B matrix. |
| [in] | blok | The blok structure that corresponds to the A matrix, and that belongs either to cblk or fcbk depending on the side parameter. |
| [in,out] | fcbk | The cblk structure that corresponds to the C matrix. |
| [in] | dataA | The pointer to the correct representation of the data of A.
|
| [in] | B | The pointer to the matrix B, that is a portion of the right hand side. |
| [in] | ldb | The leading dimension of B. |
| [in,out] | C | The pointer to the matrix C, that is the updated portion of the right hand side. |
| [in] | ldc | The leading dimension of C. |
Definition at line 160 of file solve_strsmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, pastix_int_t, PastixLeft, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by solve_cblk_strsmsp_backward(), and solve_cblk_strsmsp_forward().
| void solve_cblk_strsmsp_forward | ( | const args_solve_t * | enums, |
| SolverMatrix * | datacode, | ||
| const SolverCblk * | cblk, | ||
| pastix_rhs_t | rhsb | ||
| ) |
Apply a forward solve related to one cblk to all the right hand side.
| [in] | enums | Enums needed for the solve. |
| [in] | datacode | The SolverMatrix structure from PaStiX. |
| [in] | cblk | The cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
| [in,out] | rhsb | The pointer to the rhs data structure that holds the vectors of the right hand side. |
Definition at line 302 of file solve_strsmsp.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, blok_rownbr(), cblk_colnbr(), cblk_getdata(), cblk_rownbr(), pastix_rhs_s::cblkb, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, cpucblk_srelease_rhs_fwd_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, pastix_int_t, PastixKernelTRSMForw, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, PastixUpper, solve_blok_sgemm(), and solve_blok_strsm().
Referenced by sequential_strsm(), thread_strsm_dynamic(), and thread_strsm_static().
| void solve_cblk_strsmsp_backward | ( | const args_solve_t * | enums, |
| SolverMatrix * | datacode, | ||
| SolverCblk * | cblk, | ||
| pastix_rhs_t | rhsb | ||
| ) |
Apply a backward solve related to one cblk to all the right hand side.
| [in] | enums | Enums needed for the solve. |
| [in] | datacode | The SolverMatrix structure from PaStiX. |
| [in] | cblk | The cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
| [in,out] | rhsb | The pointer to the rhs data structure that holds the vectors of the right hand side. |
Definition at line 468 of file solve_strsmsp.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, blok_rownbr(), solver_matrix_s::bloktab, solver_cblk_s::brownum, solver_matrix_s::browtab, cblk_colnbr(), cblk_getdata(), cblk_rownbr(), pastix_rhs_s::cblkb, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, cpucblk_srelease_rhs_bwd_deps(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, pastix_int_t, PastixKernelTRSMBack, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixSchedSequential, PastixTrans, PastixUCoef, PastixUpper, solver_matrix_s::reqtab, solve_blok_sgemm(), and solve_blok_strsm().
Referenced by sequential_strsm(), thread_strsm_dynamic(), and thread_strsm_static().
| void solve_cblk_sdiag | ( | const SolverCblk * | cblk, |
| const void * | dataA, | ||
| int | nrhs, | ||
| float * | b, | ||
| int | ldb, | ||
| float * | work | ||
| ) |
Apply the diagonal solve related to one cblk to all the right hand side.
| [in] | cblk | The cblk structure to which diagonal block belongs to. |
| [in] | nrhs | The number of right hand side |
| [in,out] | b | The pointer to vectors of the right hand side |
| [in] | ldb | The leading dimension of b |
| [in,out] | work | Workspace to temporarily store the diagonal when multiple RHS are involved. Might be set to NULL for internal allocation on need. |
Definition at line 664 of file solve_strsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by sequential_sdiag(), thread_sdiag_dynamic(), and thread_sdiag_static().
| void solve_blok_ztrsm | ( | pastix_side_t | side, |
| pastix_uplo_t | uplo, | ||
| pastix_trans_t | trans, | ||
| pastix_diag_t | diag, | ||
| const SolverCblk * | cblk, | ||
| int | nrhs, | ||
| const void * | dataA, | ||
| pastix_complex64_t * | b, | ||
| int | ldb | ||
| ) |
Apply a solve trsm update related to a diagonal block of the matrix A.
| [in] | side | Specify the side parameter of the TRSM. |
| [in] | uplo | Specify the uplo parameter of the TRSM. |
| [in] | trans | Specify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixConjTrans. |
| [in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
| [in] | cblk | The cblk structure that corresponds to the A and B matrix. |
| [in] | nrhs | The number of right hand side. |
| [in] | dataA | The pointer to the correct representation of the data of A.
|
| [in,out] | b | The pointer to the matrix B, that is a portion of the right hand side to solve. |
| [in] | ldb | The leading dimension of B. |
Definition at line 76 of file solve_ztrsmsp.c.
References cblk_colnbr(), solver_cblk_s::cblktype, pastix_int_t, pastix_lrblock_s::rk, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by solve_cblk_ztrsmsp_backward(), and solve_cblk_ztrsmsp_forward().
| void solve_blok_zgemm | ( | pastix_side_t | side, |
| pastix_trans_t | trans, | ||
| pastix_int_t | nrhs, | ||
| const SolverCblk * | cblk, | ||
| const SolverBlok * | blok, | ||
| SolverCblk * | fcbk, | ||
| const void * | dataA, | ||
| const pastix_complex64_t * | B, | ||
| pastix_int_t | ldb, | ||
| pastix_complex64_t * | C, | ||
| pastix_int_t | ldc | ||
| ) |
Apply a solve gemm update related to a single block of the matrix A.
| [in] | side | Specify whether the blok parameter belongs to cblk (PastixLeft), or to fcbk (PastixRight). |
| [in] | trans | Specify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixConjTrans. |
| [in] | nrhs | The number of right hand side. |
| [in] | cblk | The cblk structure that corresponds to the B matrix. |
| [in] | blok | The blok structure that corresponds to the A matrix, and that belongs either to cblk or fcbk depending on the side parameter. |
| [in,out] | fcbk | The cblk structure that corresponds to the C matrix. |
| [in] | dataA | The pointer to the correct representation of the data of A.
|
| [in] | B | The pointer to the matrix B, that is a portion of the right hand side. |
| [in] | ldb | The leading dimension of B. |
| [in,out] | C | The pointer to the matrix C, that is the updated portion of the right hand side. |
| [in] | ldc | The leading dimension of C. |
Definition at line 160 of file solve_ztrsmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, pastix_int_t, PastixLeft, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by solve_cblk_ztrsmsp_backward(), and solve_cblk_ztrsmsp_forward().
| void solve_cblk_ztrsmsp_forward | ( | const args_solve_t * | enums, |
| SolverMatrix * | datacode, | ||
| const SolverCblk * | cblk, | ||
| pastix_rhs_t | rhsb | ||
| ) |
Apply a forward solve related to one cblk to all the right hand side.
| [in] | enums | Enums needed for the solve. |
| [in] | datacode | The SolverMatrix structure from PaStiX. |
| [in] | cblk | The cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
| [in,out] | rhsb | The pointer to the rhs data structure that holds the vectors of the right hand side. |
Definition at line 302 of file solve_ztrsmsp.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, blok_rownbr(), cblk_colnbr(), cblk_getdata(), cblk_rownbr(), pastix_rhs_s::cblkb, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, cpucblk_zrelease_rhs_fwd_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, pastix_int_t, PastixConjTrans, PastixKernelTRSMForw, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, PastixUpper, solve_blok_zgemm(), and solve_blok_ztrsm().
Referenced by sequential_ztrsm(), thread_ztrsm_dynamic(), and thread_ztrsm_static().
| void solve_cblk_ztrsmsp_backward | ( | const args_solve_t * | enums, |
| SolverMatrix * | datacode, | ||
| SolverCblk * | cblk, | ||
| pastix_rhs_t | rhsb | ||
| ) |
Apply a backward solve related to one cblk to all the right hand side.
| [in] | enums | Enums needed for the solve. |
| [in] | datacode | The SolverMatrix structure from PaStiX. |
| [in] | cblk | The cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
| [in,out] | rhsb | The pointer to the rhs data structure that holds the vectors of the right hand side. |
Definition at line 468 of file solve_ztrsmsp.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, blok_rownbr(), solver_matrix_s::bloktab, solver_cblk_s::brownum, solver_matrix_s::browtab, cblk_colnbr(), cblk_getdata(), cblk_rownbr(), pastix_rhs_s::cblkb, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, cpucblk_zrelease_rhs_bwd_deps(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, pastix_int_t, PastixConjTrans, PastixKernelTRSMBack, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixSchedSequential, PastixTrans, PastixUCoef, PastixUpper, solver_matrix_s::reqtab, solve_blok_zgemm(), and solve_blok_ztrsm().
Referenced by sequential_ztrsm(), thread_ztrsm_dynamic(), and thread_ztrsm_static().
| void solve_cblk_zdiag | ( | const SolverCblk * | cblk, |
| const void * | dataA, | ||
| int | nrhs, | ||
| pastix_complex64_t * | b, | ||
| int | ldb, | ||
| pastix_complex64_t * | work | ||
| ) |
Apply the diagonal solve related to one cblk to all the right hand side.
| [in] | cblk | The cblk structure to which diagonal block belongs to. |
| [in] | nrhs | The number of right hand side |
| [in,out] | b | The pointer to vectors of the right hand side |
| [in] | ldb | The leading dimension of b |
| [in,out] | work | Workspace to temporarily store the diagonal when multiple RHS are involved. Might be set to NULL for internal allocation on need. |
Definition at line 664 of file solve_ztrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by sequential_zdiag(), thread_zdiag_dynamic(), and thread_zdiag_static().