PaStiX Handbook  6.4.0
Internal functions to the sparse matrix blocked CSC module

Functions

void bcsc_handle_comm_init (const SolverMatrix *solvmtx, pastix_bcsc_t *bcsc)
 Initializes the bcsc_handle_comm_t structure. More...
 
void bcsc_handle_comm_exit (bcsc_handle_comm_t *bcsc_comm)
 Frees the bcsc_handle_comm pointers. More...
 
pastix_int_tbcsc_init_col2cblk_shm (const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc)
 Creates the array which represents the repartition of each column in the block structure. The array size is spm->gNexp where: More...
 
pastix_int_tbcsc_init_col2cblk (const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, const spmatrix_t *spm)
 Creates the array which represents the repartition of each column in the block structure. This routine calls bcsc_init_col2cblk_shm or bcsc_init_col2cblk_dst according to the way the matrix is stored in the memory. More...
 
pastix_int_t bcsc_init_coltab (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_bcsc_t *bcsc)
 Initializes the coltab of a block csc matrix. The coltab corresponds to the number of rows (expended) per column (non expended). If the matrix is distributed in the memory, this function also calls the routines which exchange the amount of data for the communication, store the indexes and values to send and exchange the indexes. More...
 
void bcsc_restore_coltab (pastix_bcsc_t *bcsc)
 Restores the coltab array when it has been modified to initialize the row and values arrays. More...
 
void bcsc_init_struct (const spmatrix_t *spm, const SolverMatrix *solvmtx, pastix_bcsc_t *bcsc)
 Initializes a block csc. More...
 
void bcsc_exit_struct (pastix_bcsc_t *bcsc)
 Cleanup the bcsc struct. (symmetric of bcsc_init_struct) More...
 
static pastix_int_t bcsc_sinit_A (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_bcsc_t *bcsc)
 Initializes the A values of the block csc stored in the given spm. More...
 
static pastix_int_t bcsc_sinit_At (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_int_t *rowtab, pastix_bcsc_t *bcsc)
 Initializes the At values in the block cscstored in the given spm. More...
 
static void bcsc_ssort (const pastix_bcsc_t *bcsc, pastix_int_t *rowtab, float *valtab)
 Sorts the block csc subarray associated to each column block. More...
 
static pastix_int_t bcsc_cinit_A (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_bcsc_t *bcsc)
 Initializes the A values of the block csc stored in the given spm. More...
 
static pastix_int_t bcsc_cinit_At (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_int_t *rowtab, pastix_bcsc_t *bcsc)
 Initializes the At values in the block cscstored in the given spm. More...
 
static void bcsc_csort (const pastix_bcsc_t *bcsc, pastix_int_t *rowtab, pastix_complex32_t *valtab)
 Sorts the block csc subarray associated to each column block. More...
 
static pastix_int_t bcsc_dinit_A (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_bcsc_t *bcsc)
 Initializes the A values of the block csc stored in the given spm. More...
 
static pastix_int_t bcsc_dinit_At (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_int_t *rowtab, pastix_bcsc_t *bcsc)
 Initializes the At values in the block cscstored in the given spm. More...
 
static void bcsc_dsort (const pastix_bcsc_t *bcsc, pastix_int_t *rowtab, double *valtab)
 Sorts the block csc subarray associated to each column block. More...
 
static pastix_int_t bcsc_zinit_A (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_bcsc_t *bcsc)
 Initializes the A values of the block csc stored in the given spm. More...
 
static pastix_int_t bcsc_zinit_At (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_int_t *rowtab, pastix_bcsc_t *bcsc)
 Initializes the At values in the block cscstored in the given spm. More...
 
static void bcsc_zsort (const pastix_bcsc_t *bcsc, pastix_int_t *rowtab, pastix_complex64_t *valtab)
 Sorts the block csc subarray associated to each column block. More...
 
float bcsc_snorm_max (const pastix_bcsc_t *bcsc)
 Compute the max norm of a bcsc matrix. More...
 
float bcsc_snorm_inf (const pastix_bcsc_t *bcsc)
 Compute the infinity norm of a bcsc matrix. The infinity norm is equal to the maximum value of the sum of the absolute values of the elements of each rows. More...
 
float bcsc_snorm_one (const pastix_bcsc_t *bcsc)
 Compute the norm 1 of a bcsc matrix. Norm 1 is equal to the maximum value of the sum of the absolute values of the elements of each columns. More...
 
float bcsc_snorm_frobenius (const pastix_bcsc_t *bcsc)
 Compute the frobenius norm of a bcsc matrix. More...
 
float bcsc_cnorm_max (const pastix_bcsc_t *bcsc)
 Compute the max norm of a bcsc matrix. More...
 
float bcsc_cnorm_inf (const pastix_bcsc_t *bcsc)
 Compute the infinity norm of a bcsc matrix. The infinity norm is equal to the maximum value of the sum of the absolute values of the elements of each rows. More...
 
float bcsc_cnorm_one (const pastix_bcsc_t *bcsc)
 Compute the norm 1 of a bcsc matrix. Norm 1 is equal to the maximum value of the sum of the absolute values of the elements of each columns. More...
 
float bcsc_cnorm_frobenius (const pastix_bcsc_t *bcsc)
 Compute the frobenius norm of a bcsc matrix. More...
 
double bcsc_dnorm_max (const pastix_bcsc_t *bcsc)
 Compute the max norm of a bcsc matrix. More...
 
double bcsc_dnorm_inf (const pastix_bcsc_t *bcsc)
 Compute the infinity norm of a bcsc matrix. The infinity norm is equal to the maximum value of the sum of the absolute values of the elements of each rows. More...
 
double bcsc_dnorm_one (const pastix_bcsc_t *bcsc)
 Compute the norm 1 of a bcsc matrix. Norm 1 is equal to the maximum value of the sum of the absolute values of the elements of each columns. More...
 
double bcsc_dnorm_frobenius (const pastix_bcsc_t *bcsc)
 Compute the frobenius norm of a bcsc matrix. More...
 
double bcsc_znorm_max (const pastix_bcsc_t *bcsc)
 Compute the max norm of a bcsc matrix. More...
 
double bcsc_znorm_inf (const pastix_bcsc_t *bcsc)
 Compute the infinity norm of a bcsc matrix. The infinity norm is equal to the maximum value of the sum of the absolute values of the elements of each rows. More...
 
double bcsc_znorm_one (const pastix_bcsc_t *bcsc)
 Compute the norm 1 of a bcsc matrix. Norm 1 is equal to the maximum value of the sum of the absolute values of the elements of each columns. More...
 
double bcsc_znorm_frobenius (const pastix_bcsc_t *bcsc)
 Compute the frobenius norm of a bcsc matrix. More...
 
void pthread_bcsc_sspmv (isched_thread_t *ctx, void *args)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void pthread_bcsc_sspmv_tasktab (isched_thread_t *ctx, void *args)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void bcsc_sspmv_get_balanced_indexes (const pastix_data_t *pastix_data, struct s_argument_spmv_s *args)
 Initialize indexes for vector pointer and bloc indexes for parallel version of spmv. More...
 
void pthread_bcsc_cspmv (isched_thread_t *ctx, void *args)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void pthread_bcsc_cspmv_tasktab (isched_thread_t *ctx, void *args)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void bcsc_cspmv_get_balanced_indexes (const pastix_data_t *pastix_data, struct c_argument_spmv_s *args)
 Initialize indexes for vector pointer and bloc indexes for parallel version of spmv. More...
 
void pthread_bcsc_dspmv (isched_thread_t *ctx, void *args)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void pthread_bcsc_dspmv_tasktab (isched_thread_t *ctx, void *args)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void bcsc_dspmv_get_balanced_indexes (const pastix_data_t *pastix_data, struct d_argument_spmv_s *args)
 Initialize indexes for vector pointer and bloc indexes for parallel version of spmv. More...
 
void pthread_bcsc_zspmv (isched_thread_t *ctx, void *args)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void pthread_bcsc_zspmv_tasktab (isched_thread_t *ctx, void *args)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void bcsc_zspmv_get_balanced_indexes (const pastix_data_t *pastix_data, struct z_argument_spmv_s *args)
 Initialize indexes for vector pointer and bloc indexes for parallel version of spmv. More...
 
static void pthread_bvec_saxpy (isched_thread_t *ctx, void *args)
 Compute y <- alpha * x + y (Parallel version). More...
 
static void pthread_bvec_sdot (isched_thread_t *ctx, void *args)
 Compute the scalar product x.y. (Parallel version) More...
 
static void pthread_bvec_scopy (isched_thread_t *ctx, void *args)
 Copy a vector y = x (parallel version) More...
 
static void pthread_bvec_sgemv (isched_thread_t *ctx, void *args)
 Compute. More...
 
static void pthread_bvec_caxpy (isched_thread_t *ctx, void *args)
 Compute y <- alpha * x + y (Parallel version). More...
 
static void pthread_bvec_cdotu (isched_thread_t *ctx, void *args)
 Compute the scalar product x.y. (Parallel version) More...
 
static void pthread_bvec_ccopy (isched_thread_t *ctx, void *args)
 Copy a vector y = x (parallel version) More...
 
static void pthread_bvec_cgemv (isched_thread_t *ctx, void *args)
 Compute. More...
 
static void pthread_bvec_daxpy (isched_thread_t *ctx, void *args)
 Compute y <- alpha * x + y (Parallel version). More...
 
static void pthread_bvec_ddot (isched_thread_t *ctx, void *args)
 Compute the scalar product x.y. (Parallel version) More...
 
static void pthread_bvec_dcopy (isched_thread_t *ctx, void *args)
 Copy a vector y = x (parallel version) More...
 
static void pthread_bvec_dgemv (isched_thread_t *ctx, void *args)
 Compute. More...
 
static void pthread_bvec_zaxpy (isched_thread_t *ctx, void *args)
 Compute y <- alpha * x + y (Parallel version). More...
 
static void pthread_bvec_zdotu (isched_thread_t *ctx, void *args)
 Compute the scalar product x.y. (Parallel version) More...
 
static void pthread_bvec_zcopy (isched_thread_t *ctx, void *args)
 Copy a vector y = x (parallel version) More...
 
static void pthread_bvec_zgemv (isched_thread_t *ctx, void *args)
 Compute. More...
 
static int bvec_slapmr_shm (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, float *A, pastix_int_t lda, pastix_rhs_t PA)
 Apply a row permutation to a right hand side A (LAPACK xlatmr) in the shared memory case. More...
 
int bvec_slapmr (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, float *A, pastix_int_t lda, pastix_rhs_t PA)
 Apply a row permutation to a right hand side A (LAPACK xlatmr) More...
 
static int bvec_clapmr_shm (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_rhs_t PA)
 Apply a row permutation to a right hand side A (LAPACK xlatmr) in the shared memory case. More...
 
int bvec_clapmr (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_rhs_t PA)
 Apply a row permutation to a right hand side A (LAPACK xlatmr) More...
 
static int bvec_dlapmr_shm (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, double *A, pastix_int_t lda, pastix_rhs_t PA)
 Apply a row permutation to a right hand side A (LAPACK xlatmr) in the shared memory case. More...
 
int bvec_dlapmr (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, double *A, pastix_int_t lda, pastix_rhs_t PA)
 Apply a row permutation to a right hand side A (LAPACK xlatmr) More...
 
static int bvec_zlapmr_shm (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_rhs_t PA)
 Apply a row permutation to a right hand side A (LAPACK xlatmr) in the shared memory case. More...
 
int bvec_zlapmr (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_rhs_t PA)
 Apply a row permutation to a right hand side A (LAPACK xlatmr) More...
 

PastixComplex32 initialization functions

void bcsc_cinit (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, int initAt, pastix_bcsc_t *bcsc, pastix_int_t valuesize)
 Initializes a centralize pastix_complex32_t block csc. More...
 

PastixDouble initialization functions

void bcsc_dinit (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, int initAt, pastix_bcsc_t *bcsc, pastix_int_t valuesize)
 Initializes a centralize double block csc. More...
 

PastixComplex64 initialization functions

void bcsc_zinit (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, int initAt, pastix_bcsc_t *bcsc, pastix_int_t valuesize)
 Initializes a centralize pastix_complex64_t block csc. More...
 

PastixFloat initialization functions

void bcsc_sinit (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, int initAt, pastix_bcsc_t *bcsc, pastix_int_t valuesize)
 Initializes a centralize float block csc. More...
 

Detailed Description

Function Documentation

◆ bcsc_handle_comm_init()

void bcsc_handle_comm_init ( const SolverMatrix solvmtx,
pastix_bcsc_t *  bcsc 
)

Initializes the bcsc_handle_comm_t structure.

Parameters
[in]solvmtxThe solver matrix structure which describes the data distribution.
[out]bcscThe bcsc.

Definition at line 48 of file bcsc.c.

References bcsc_handle_comm_s::clustnbr, bcsc_handle_comm_s::clustnum, bcsc_handle_comm_s::comm, bcsc_handle_comm_s::data_comm, bcsc_handle_comm_s::flttype, and pastix_int_t.

Referenced by bcsc_init_struct().

◆ bcsc_handle_comm_exit()

void bcsc_handle_comm_exit ( bcsc_handle_comm_t bcsc_comm)

Frees the bcsc_handle_comm pointers.

Parameters
[in,out]bcsc_commThe bcsc_handle_comm_t structure.

Definition at line 79 of file bcsc.c.

References bcsc_handle_comm_s::clustnbr, bcsc_handle_comm_s::data_comm, bcsc_exch_comm_s::idxbuf, bcsc_proc_comm_s::recvAAt, bcsc_proc_comm_s::sendA, bcsc_proc_comm_s::sendAAt, bcsc_proc_comm_s::sendAt, and bcsc_exch_comm_s::valbuf.

Referenced by bcsc_exit_struct().

◆ bcsc_init_col2cblk_shm()

pastix_int_t * bcsc_init_col2cblk_shm ( const SolverMatrix solvmtx,
const pastix_bcsc_t *  bcsc 
)

Creates the array which represents the repartition of each column in the block structure. The array size is spm->gNexp where:

  • col2cblk[k] = cblknum, with cblknum the index of the block column where the column k is stored. This routine is called when the matrix is in shared memory.
Parameters
[in]solvmtxThe solvmtx structure associated to the problem.
[in,out]bcscThe internal block CSC structure. The number of local columns is updated.
Returns
The col2cblk array which gives the repartition of the solvmtx columns into the block structure.

Definition at line 522 of file bcsc.c.

References solver_matrix_s::cblknbr, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and pastix_int_t.

Referenced by bcsc_init_col2cblk().

◆ bcsc_init_col2cblk()

pastix_int_t * bcsc_init_col2cblk ( const SolverMatrix solvmtx,
const pastix_bcsc_t *  bcsc,
const spmatrix_t *  spm 
)

Creates the array which represents the repartition of each column in the block structure. This routine calls bcsc_init_col2cblk_shm or bcsc_init_col2cblk_dst according to the way the matrix is stored in the memory.

Parameters
[in]solvmtxThe solvmtx structure associated to the problem.
[in]bcscThe internal block CSC structure. The number of local columns is updated.
[in]spmThe initial sparse matrix in the spm format.
Returns
The col2cblk array which gives the repartition of the solvmtx columns into the block structure.

Definition at line 721 of file bcsc.c.

References bcsc_init_col2cblk_shm(), and pastix_int_t.

Referenced by bcsc_init_struct().

◆ bcsc_init_coltab()

pastix_int_t bcsc_init_coltab ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_bcsc_t *  bcsc 
)

Initializes the coltab of a block csc matrix. The coltab corresponds to the number of rows (expended) per column (non expended). If the matrix is distributed in the memory, this function also calls the routines which exchange the amount of data for the communication, store the indexes and values to send and exchange the indexes.

Parameters
[in]spmThe spm structure that stores the dofs.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc stores the initialized coltab split per block corresponding to the input spm with the permutation applied and grouped accordingly to the distribution described in solvmtx.
Returns
The number of non zero unknowns in the matrix.

Definition at line 1616 of file bcsc.c.

References bcsc_init_dofshift(), bcsc_init_global_coltab(), solver_cblk_s::bcscnum, cblk_colnbr(), solver_matrix_s::cblknbr, bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::cblktype, bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, solver_matrix_s::faninnbr, solver_cblk_s::fcolnum, pastix_int_t, and solver_matrix_s::recvnbr.

Referenced by bcsc_init().

◆ bcsc_restore_coltab()

void bcsc_restore_coltab ( pastix_bcsc_t *  bcsc)

Restores the coltab array when it has been modified to initialize the row and values arrays.

Parameters
[in,out]bcscOn entry, the bcsc to restore. On exit, the coltab array of the bcsc is restored to the correct indexes.

Definition at line 1700 of file bcsc.c.

References bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, and pastix_int_t.

Referenced by bcsc_cinit(), bcsc_dinit(), bcsc_sinit(), and bcsc_zinit().

◆ bcsc_init_struct()

void bcsc_init_struct ( const spmatrix_t *  spm,
const SolverMatrix solvmtx,
pastix_bcsc_t *  bcsc 
)

Initializes a block csc.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc stores the input spm with the permutation applied and grouped accordingly to the distribution described in solvmtx.

Definition at line 1739 of file bcsc.c.

References bcsc_handle_comm_init(), bcsc_init_col2cblk(), solver_matrix_s::nodenbr, and pastix_int_t.

Referenced by bcsc_init().

◆ bcsc_exit_struct()

void bcsc_exit_struct ( pastix_bcsc_t *  bcsc)

Cleanup the bcsc struct. (symmetric of bcsc_init_struct)

Parameters
[in,out]bcscOn entry, the pointer to the initialized bcsc. On exit, the bcsc freed from the informations initialized by bcsc_init_struct().

Definition at line 1781 of file bcsc.c.

References bcsc_handle_comm_exit().

Referenced by bcscExit().

◆ bcsc_cinit()

void bcsc_cinit ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
int  initAt,
pastix_bcsc_t *  bcsc,
pastix_int_t  valuesize 
)

Initializes a centralize pastix_complex32_t block csc.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering that needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure that describe the data distribution.
[in]initAtA flag to enable/disable the initialization of A'.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc stores the input spm with the permutation applied and grouped according to the distribution described in solvmtx.
[in]valuesizeThe number of non zero unknowns in the matrix.

Definition at line 1378 of file bcsc_cinit.c.

References bcsc_cinit_A(), bcsc_cinit_At(), bcsc_csort(), bcsc_restore_coltab(), and pastix_int_t.

Referenced by bcsc_init().

◆ bcsc_dinit()

void bcsc_dinit ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
int  initAt,
pastix_bcsc_t *  bcsc,
pastix_int_t  valuesize 
)

Initializes a centralize double block csc.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering that needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure that describe the data distribution.
[in]initAtA flag to enable/disable the initialization of A'.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc stores the input spm with the permutation applied and grouped according to the distribution described in solvmtx.
[in]valuesizeThe number of non zero unknowns in the matrix.

Definition at line 1378 of file bcsc_dinit.c.

References bcsc_dinit_A(), bcsc_dinit_At(), bcsc_dsort(), bcsc_restore_coltab(), and pastix_int_t.

Referenced by bcsc_init().

◆ bcsc_zinit()

void bcsc_zinit ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
int  initAt,
pastix_bcsc_t *  bcsc,
pastix_int_t  valuesize 
)

Initializes a centralize pastix_complex64_t block csc.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering that needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure that describe the data distribution.
[in]initAtA flag to enable/disable the initialization of A'.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc stores the input spm with the permutation applied and grouped according to the distribution described in solvmtx.
[in]valuesizeThe number of non zero unknowns in the matrix.

Definition at line 1378 of file bcsc_zinit.c.

References bcsc_restore_coltab(), bcsc_zinit_A(), bcsc_zinit_At(), bcsc_zsort(), and pastix_int_t.

Referenced by bcsc_init().

◆ bcsc_sinit()

void bcsc_sinit ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
int  initAt,
pastix_bcsc_t *  bcsc,
pastix_int_t  valuesize 
)

Initializes a centralize float block csc.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering that needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure that describe the data distribution.
[in]initAtA flag to enable/disable the initialization of A'.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc stores the input spm with the permutation applied and grouped according to the distribution described in solvmtx.
[in]valuesizeThe number of non zero unknowns in the matrix.

Definition at line 1378 of file bcsc_sinit.c.

References bcsc_restore_coltab(), bcsc_sinit_A(), bcsc_sinit_At(), bcsc_ssort(), and pastix_int_t.

Referenced by bcsc_init().

◆ bcsc_sinit_A()

static pastix_int_t bcsc_sinit_A ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_bcsc_t *  bcsc 
)
inlinestatic

Initializes the A values of the block csc stored in the given spm.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc fields are updated.
Return values
TODO

Definition at line 1050 of file bcsc_sinit.c.

References solver_cblk_s::bcscnum, solver_matrix_s::cblktab, solver_cblk_s::fcolnum, pastix_int_t, and pastix_order_s::permtab.

Referenced by bcsc_sinit().

◆ bcsc_sinit_At()

static pastix_int_t bcsc_sinit_At ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_int_t rowtab,
pastix_bcsc_t *  bcsc 
)
inlinestatic

Initializes the At values in the block cscstored in the given spm.

This routine initializes either : The symmetric upper part (L^t) The symmetric upper part (L^h) The transpose part of A (A^t -> U)

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]rowtabThe row tab of the bcsc or the row tab associated to At.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc fields are updated.
Return values
TODO

Definition at line 1176 of file bcsc_sinit.c.

References solver_cblk_s::bcscnum, solver_matrix_s::cblktab, solver_cblk_s::fcolnum, pastix_int_t, and pastix_order_s::permtab.

Referenced by bcsc_sinit().

◆ bcsc_ssort()

static void bcsc_ssort ( const pastix_bcsc_t *  bcsc,
pastix_int_t rowtab,
float *  valtab 
)
inlinestatic

Sorts the block csc subarray associated to each column block.

Parameters
[in]bcscOn entry, the pointer to an allocated bcsc.
[in]rowtabThe initial sparse matrix in the spm format.
[in]valtabThe ordering that needs to be applied on the spm to generate the block csc.

Definition at line 1312 of file bcsc_sinit.c.

References bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, and pastix_int_t.

Referenced by bcsc_sinit().

◆ bcsc_cinit_A()

static pastix_int_t bcsc_cinit_A ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_bcsc_t *  bcsc 
)
inlinestatic

Initializes the A values of the block csc stored in the given spm.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc fields are updated.
Return values
TODO

Definition at line 1050 of file bcsc_cinit.c.

References solver_cblk_s::bcscnum, solver_matrix_s::cblktab, solver_cblk_s::fcolnum, pastix_int_t, and pastix_order_s::permtab.

Referenced by bcsc_cinit().

◆ bcsc_cinit_At()

static pastix_int_t bcsc_cinit_At ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_int_t rowtab,
pastix_bcsc_t *  bcsc 
)
inlinestatic

Initializes the At values in the block cscstored in the given spm.

This routine initializes either : The symmetric upper part (L^t) The hermitian upper part (L^h) The transpose part of A (A^t -> U)

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]rowtabThe row tab of the bcsc or the row tab associated to At.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc fields are updated.
Return values
TODO

Definition at line 1176 of file bcsc_cinit.c.

References solver_cblk_s::bcscnum, solver_matrix_s::cblktab, solver_cblk_s::fcolnum, pastix_int_t, and pastix_order_s::permtab.

Referenced by bcsc_cinit().

◆ bcsc_csort()

static void bcsc_csort ( const pastix_bcsc_t *  bcsc,
pastix_int_t rowtab,
pastix_complex32_t valtab 
)
inlinestatic

Sorts the block csc subarray associated to each column block.

Parameters
[in]bcscOn entry, the pointer to an allocated bcsc.
[in]rowtabThe initial sparse matrix in the spm format.
[in]valtabThe ordering that needs to be applied on the spm to generate the block csc.

Definition at line 1312 of file bcsc_cinit.c.

References bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, and pastix_int_t.

Referenced by bcsc_cinit().

◆ bcsc_dinit_A()

static pastix_int_t bcsc_dinit_A ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_bcsc_t *  bcsc 
)
inlinestatic

Initializes the A values of the block csc stored in the given spm.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc fields are updated.
Return values
TODO

Definition at line 1050 of file bcsc_dinit.c.

References solver_cblk_s::bcscnum, solver_matrix_s::cblktab, solver_cblk_s::fcolnum, pastix_int_t, and pastix_order_s::permtab.

Referenced by bcsc_dinit().

◆ bcsc_dinit_At()

static pastix_int_t bcsc_dinit_At ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_int_t rowtab,
pastix_bcsc_t *  bcsc 
)
inlinestatic

Initializes the At values in the block cscstored in the given spm.

This routine initializes either : The symmetric upper part (L^t) The symmetric upper part (L^h) The transpose part of A (A^t -> U)

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]rowtabThe row tab of the bcsc or the row tab associated to At.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc fields are updated.
Return values
TODO

Definition at line 1176 of file bcsc_dinit.c.

References solver_cblk_s::bcscnum, solver_matrix_s::cblktab, solver_cblk_s::fcolnum, pastix_int_t, and pastix_order_s::permtab.

Referenced by bcsc_dinit().

◆ bcsc_dsort()

static void bcsc_dsort ( const pastix_bcsc_t *  bcsc,
pastix_int_t rowtab,
double *  valtab 
)
inlinestatic

Sorts the block csc subarray associated to each column block.

Parameters
[in]bcscOn entry, the pointer to an allocated bcsc.
[in]rowtabThe initial sparse matrix in the spm format.
[in]valtabThe ordering that needs to be applied on the spm to generate the block csc.

Definition at line 1312 of file bcsc_dinit.c.

References bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, and pastix_int_t.

Referenced by bcsc_dinit().

◆ bcsc_zinit_A()

static pastix_int_t bcsc_zinit_A ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_bcsc_t *  bcsc 
)
inlinestatic

Initializes the A values of the block csc stored in the given spm.

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc fields are updated.
Return values
TODO

Definition at line 1050 of file bcsc_zinit.c.

References solver_cblk_s::bcscnum, solver_matrix_s::cblktab, solver_cblk_s::fcolnum, pastix_int_t, and pastix_order_s::permtab.

Referenced by bcsc_zinit().

◆ bcsc_zinit_At()

static pastix_int_t bcsc_zinit_At ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_int_t rowtab,
pastix_bcsc_t *  bcsc 
)
inlinestatic

Initializes the At values in the block cscstored in the given spm.

This routine initializes either : The symmetric upper part (L^t) The hermitian upper part (L^h) The transpose part of A (A^t -> U)

Parameters
[in]spmThe initial sparse matrix in the spm format.
[in]ordThe ordering which needs to be applied on the spm to generate the block csc.
[in]solvmtxThe solver matrix structure which describes the data distribution.
[in,out]rowtabThe row tab of the bcsc or the row tab associated to At.
[in,out]bcscOn entry, the pointer to an allocated bcsc. On exit, the bcsc fields are updated.
Return values
TODO

Definition at line 1176 of file bcsc_zinit.c.

References pastix_int_t.

Referenced by bcsc_zinit().

◆ bcsc_zsort()

static void bcsc_zsort ( const pastix_bcsc_t *  bcsc,
pastix_int_t rowtab,
pastix_complex64_t *  valtab 
)
inlinestatic

Sorts the block csc subarray associated to each column block.

Parameters
[in]bcscOn entry, the pointer to an allocated bcsc.
[in]rowtabThe initial sparse matrix in the spm format.
[in]valtabThe ordering that needs to be applied on the spm to generate the block csc.

Definition at line 1312 of file bcsc_zinit.c.

References bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, and pastix_int_t.

Referenced by bcsc_zinit().

◆ bcsc_snorm_max()

float bcsc_snorm_max ( const pastix_bcsc_t *  bcsc)

Compute the max norm of a bcsc matrix.

Parameters
[in]bcscTODO
Return values
Thenorm of the matrix.

Definition at line 38 of file bcsc_snorm.c.

References pastix_int_t.

Referenced by bcsc_snorm().

◆ bcsc_snorm_inf()

float bcsc_snorm_inf ( const pastix_bcsc_t *  bcsc)

Compute the infinity norm of a bcsc matrix. The infinity norm is equal to the maximum value of the sum of the absolute values of the elements of each rows.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix.

Definition at line 83 of file bcsc_snorm.c.

Referenced by bcsc_snorm().

◆ bcsc_snorm_one()

float bcsc_snorm_one ( const pastix_bcsc_t *  bcsc)

Compute the norm 1 of a bcsc matrix. Norm 1 is equal to the maximum value of the sum of the absolute values of the elements of each columns.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix.

Definition at line 160 of file bcsc_snorm.c.

Referenced by bcsc_snorm().

◆ bcsc_snorm_frobenius()

float bcsc_snorm_frobenius ( const pastix_bcsc_t *  bcsc)

Compute the frobenius norm of a bcsc matrix.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix

Definition at line 202 of file bcsc_snorm.c.

References pastix_int_t.

Referenced by bcsc_snorm().

◆ bcsc_cnorm_max()

float bcsc_cnorm_max ( const pastix_bcsc_t *  bcsc)

Compute the max norm of a bcsc matrix.

Parameters
[in]bcscTODO
Return values
Thenorm of the matrix.

Definition at line 38 of file bcsc_cnorm.c.

References pastix_int_t.

Referenced by bcsc_cnorm().

◆ bcsc_cnorm_inf()

float bcsc_cnorm_inf ( const pastix_bcsc_t *  bcsc)

Compute the infinity norm of a bcsc matrix. The infinity norm is equal to the maximum value of the sum of the absolute values of the elements of each rows.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix.

Definition at line 83 of file bcsc_cnorm.c.

Referenced by bcsc_cnorm().

◆ bcsc_cnorm_one()

float bcsc_cnorm_one ( const pastix_bcsc_t *  bcsc)

Compute the norm 1 of a bcsc matrix. Norm 1 is equal to the maximum value of the sum of the absolute values of the elements of each columns.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix.

Definition at line 160 of file bcsc_cnorm.c.

Referenced by bcsc_cnorm().

◆ bcsc_cnorm_frobenius()

float bcsc_cnorm_frobenius ( const pastix_bcsc_t *  bcsc)

Compute the frobenius norm of a bcsc matrix.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix

Definition at line 202 of file bcsc_cnorm.c.

References pastix_int_t.

Referenced by bcsc_cnorm().

◆ bcsc_dnorm_max()

double bcsc_dnorm_max ( const pastix_bcsc_t *  bcsc)

Compute the max norm of a bcsc matrix.

Parameters
[in]bcscTODO
Return values
Thenorm of the matrix.

Definition at line 38 of file bcsc_dnorm.c.

References pastix_int_t.

Referenced by bcsc_dnorm().

◆ bcsc_dnorm_inf()

double bcsc_dnorm_inf ( const pastix_bcsc_t *  bcsc)

Compute the infinity norm of a bcsc matrix. The infinity norm is equal to the maximum value of the sum of the absolute values of the elements of each rows.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix.

Definition at line 83 of file bcsc_dnorm.c.

Referenced by bcsc_dnorm().

◆ bcsc_dnorm_one()

double bcsc_dnorm_one ( const pastix_bcsc_t *  bcsc)

Compute the norm 1 of a bcsc matrix. Norm 1 is equal to the maximum value of the sum of the absolute values of the elements of each columns.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix.

Definition at line 160 of file bcsc_dnorm.c.

Referenced by bcsc_dnorm().

◆ bcsc_dnorm_frobenius()

double bcsc_dnorm_frobenius ( const pastix_bcsc_t *  bcsc)

Compute the frobenius norm of a bcsc matrix.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix

Definition at line 202 of file bcsc_dnorm.c.

References pastix_int_t.

Referenced by bcsc_dnorm().

◆ bcsc_znorm_max()

double bcsc_znorm_max ( const pastix_bcsc_t *  bcsc)

Compute the max norm of a bcsc matrix.

Parameters
[in]bcscTODO
Return values
Thenorm of the matrix.

Definition at line 38 of file bcsc_znorm.c.

References pastix_int_t.

Referenced by bcsc_znorm().

◆ bcsc_znorm_inf()

double bcsc_znorm_inf ( const pastix_bcsc_t *  bcsc)

Compute the infinity norm of a bcsc matrix. The infinity norm is equal to the maximum value of the sum of the absolute values of the elements of each rows.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix.

Definition at line 83 of file bcsc_znorm.c.

Referenced by bcsc_znorm().

◆ bcsc_znorm_one()

double bcsc_znorm_one ( const pastix_bcsc_t *  bcsc)

Compute the norm 1 of a bcsc matrix. Norm 1 is equal to the maximum value of the sum of the absolute values of the elements of each columns.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix.

Definition at line 160 of file bcsc_znorm.c.

Referenced by bcsc_znorm().

◆ bcsc_znorm_frobenius()

double bcsc_znorm_frobenius ( const pastix_bcsc_t *  bcsc)

Compute the frobenius norm of a bcsc matrix.

Parameters
[in]bcscThe Pastix bcsc.
Return values
Thenorm of the matrix

Definition at line 202 of file bcsc_znorm.c.

References pastix_int_t.

Referenced by bcsc_znorm().

◆ pthread_bcsc_sspmv()

void pthread_bcsc_sspmv ( isched_thread_t *  ctx,
void *  args 
)

Compute the matrix-vector product y = alpha * op(A) * x + beta * y.

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars. The op function is specified by the trans parameter and performs the operation as follows: trans = PastixNoTrans y := alpha*A x + beta*y trans = PastixTrans y := alpha*A' *x + beta*y trans = PastixTrans y := alpha(A')*x + beta*y

Parameters
[in]ctxthe context of the current thread
[in,out]argsThe parameter as specified in bcsc_sspmv.

Definition at line 305 of file bcsc_sspmv.c.

References pastix_int_t.

Referenced by bcsc_sspmv_smp().

◆ pthread_bcsc_sspmv_tasktab()

void pthread_bcsc_sspmv_tasktab ( isched_thread_t *  ctx,
void *  args 
)

Compute the matrix-vector product y = alpha * op(A) * x + beta * y.

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars. The op function is specified by the trans parameter and performs the operation as follows: trans = PastixNoTrans y := alpha*A x + beta*y trans = PastixTrans y := alpha*A' *x + beta*y trans = PastixTrans y := alpha(A')*x + beta*y

Parameters
[in]ctxthe context of the current thread
[in,out]argsThe parameter as specified in bcsc_sspmv.

Definition at line 357 of file bcsc_sspmv.c.

References solver_cblk_s::bcscnum, task_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, PastixGeneral, PastixNoTrans, PastixSymmetric, and PastixTrans.

Referenced by bcsc_sspmv_smp().

◆ bcsc_sspmv_get_balanced_indexes()

void bcsc_sspmv_get_balanced_indexes ( const pastix_data_t pastix_data,
struct s_argument_spmv_s *  args 
)

Initialize indexes for vector pointer and bloc indexes for parallel version of spmv.

This function Initial indexes for each thread in order to computes it once instead of once per thread. This is a more sophisticated version trying to balance the load for each thread in terms of bloc size.

Parameters
[in]pastix_dataThe pastix_data structure providing number of threads and holding the A matrix.
[out]argsThe argument containing arrays to initialise (blocs and indexes).

Definition at line 472 of file bcsc_sspmv.c.

References pastix_data_s::bcsc, solver_matrix_s::cblktab, bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, pastix_data_s::csc, solver_cblk_s::fcolnum, pastix_data_s::isched, pastix_int_t, PastixGeneral, and pastix_data_s::solvmatr.

Referenced by bcsc_sspmv_smp().

◆ pthread_bcsc_cspmv()

void pthread_bcsc_cspmv ( isched_thread_t *  ctx,
void *  args 
)

Compute the matrix-vector product y = alpha * op(A) * x + beta * y.

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars. The op function is specified by the trans parameter and performs the operation as follows: trans = PastixNoTrans y := alpha*A *x + beta*y trans = PastixTrans y := alpha*A' *x + beta*y trans = PastixConjTrans y := alpha*conjf(A')*x + beta*y

Parameters
[in]ctxthe context of the current thread
[in,out]argsThe parameter as specified in bcsc_cspmv.

Definition at line 305 of file bcsc_cspmv.c.

References pastix_int_t.

Referenced by bcsc_cspmv_smp().

◆ pthread_bcsc_cspmv_tasktab()

void pthread_bcsc_cspmv_tasktab ( isched_thread_t *  ctx,
void *  args 
)

Compute the matrix-vector product y = alpha * op(A) * x + beta * y.

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars. The op function is specified by the trans parameter and performs the operation as follows: trans = PastixNoTrans y := alpha*A *x + beta*y trans = PastixTrans y := alpha*A' *x + beta*y trans = PastixConjTrans y := alpha*conjf(A')*x + beta*y

Parameters
[in]ctxthe context of the current thread
[in,out]argsThe parameter as specified in bcsc_cspmv.

Definition at line 357 of file bcsc_cspmv.c.

References solver_cblk_s::bcscnum, task_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, PastixConjTrans, PastixGeneral, PastixHermitian, PastixNoTrans, PastixSymmetric, and PastixTrans.

Referenced by bcsc_cspmv_smp().

◆ bcsc_cspmv_get_balanced_indexes()

void bcsc_cspmv_get_balanced_indexes ( const pastix_data_t pastix_data,
struct c_argument_spmv_s *  args 
)

Initialize indexes for vector pointer and bloc indexes for parallel version of spmv.

This function Initial indexes for each thread in order to computes it once instead of once per thread. This is a more sophisticated version trying to balance the load for each thread in terms of bloc size.

Parameters
[in]pastix_dataThe pastix_data structure providing number of threads and holding the A matrix.
[out]argsThe argument containing arrays to initialise (blocs and indexes).

Definition at line 472 of file bcsc_cspmv.c.

References pastix_data_s::bcsc, solver_matrix_s::cblktab, bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, pastix_data_s::csc, solver_cblk_s::fcolnum, pastix_data_s::isched, pastix_int_t, PastixGeneral, and pastix_data_s::solvmatr.

Referenced by bcsc_cspmv_smp().

◆ pthread_bcsc_dspmv()

void pthread_bcsc_dspmv ( isched_thread_t *  ctx,
void *  args 
)

Compute the matrix-vector product y = alpha * op(A) * x + beta * y.

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars. The op function is specified by the trans parameter and performs the operation as follows: trans = PastixNoTrans y := alpha*A x + beta*y trans = PastixTrans y := alpha*A' *x + beta*y trans = PastixTrans y := alpha(A')*x + beta*y

Parameters
[in]ctxthe context of the current thread
[in,out]argsThe parameter as specified in bcsc_dspmv.

Definition at line 305 of file bcsc_dspmv.c.

References pastix_int_t.

Referenced by bcsc_dspmv_smp().

◆ pthread_bcsc_dspmv_tasktab()

void pthread_bcsc_dspmv_tasktab ( isched_thread_t *  ctx,
void *  args 
)

Compute the matrix-vector product y = alpha * op(A) * x + beta * y.

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars. The op function is specified by the trans parameter and performs the operation as follows: trans = PastixNoTrans y := alpha*A x + beta*y trans = PastixTrans y := alpha*A' *x + beta*y trans = PastixTrans y := alpha(A')*x + beta*y

Parameters
[in]ctxthe context of the current thread
[in,out]argsThe parameter as specified in bcsc_dspmv.

Definition at line 357 of file bcsc_dspmv.c.

References solver_cblk_s::bcscnum, task_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, PastixGeneral, PastixNoTrans, PastixSymmetric, and PastixTrans.

Referenced by bcsc_dspmv_smp().

◆ bcsc_dspmv_get_balanced_indexes()

void bcsc_dspmv_get_balanced_indexes ( const pastix_data_t pastix_data,
struct d_argument_spmv_s *  args 
)

Initialize indexes for vector pointer and bloc indexes for parallel version of spmv.

This function Initial indexes for each thread in order to computes it once instead of once per thread. This is a more sophisticated version trying to balance the load for each thread in terms of bloc size.

Parameters
[in]pastix_dataThe pastix_data structure providing number of threads and holding the A matrix.
[out]argsThe argument containing arrays to initialise (blocs and indexes).

Definition at line 472 of file bcsc_dspmv.c.

References pastix_data_s::bcsc, solver_matrix_s::cblktab, bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, pastix_data_s::csc, solver_cblk_s::fcolnum, pastix_data_s::isched, pastix_int_t, PastixGeneral, and pastix_data_s::solvmatr.

Referenced by bcsc_dspmv_smp().

◆ pthread_bcsc_zspmv()

void pthread_bcsc_zspmv ( isched_thread_t *  ctx,
void *  args 
)

Compute the matrix-vector product y = alpha * op(A) * x + beta * y.

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars. The op function is specified by the trans parameter and performs the operation as follows: trans = PastixNoTrans y := alpha*A *x + beta*y trans = PastixTrans y := alpha*A' *x + beta*y trans = PastixConjTrans y := alpha*conj(A')*x + beta*y

Parameters
[in]ctxthe context of the current thread
[in,out]argsThe parameter as specified in bcsc_zspmv.

Definition at line 305 of file bcsc_zspmv.c.

References pastix_int_t.

Referenced by bcsc_zspmv_smp().

◆ pthread_bcsc_zspmv_tasktab()

void pthread_bcsc_zspmv_tasktab ( isched_thread_t *  ctx,
void *  args 
)

Compute the matrix-vector product y = alpha * op(A) * x + beta * y.

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars. The op function is specified by the trans parameter and performs the operation as follows: trans = PastixNoTrans y := alpha*A *x + beta*y trans = PastixTrans y := alpha*A' *x + beta*y trans = PastixConjTrans y := alpha*conj(A')*x + beta*y

Parameters
[in]ctxthe context of the current thread
[in,out]argsThe parameter as specified in bcsc_zspmv.

Definition at line 357 of file bcsc_zspmv.c.

References solver_cblk_s::bcscnum, task_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, PastixConjTrans, PastixGeneral, PastixHermitian, PastixNoTrans, PastixSymmetric, and PastixTrans.

Referenced by bcsc_zspmv_smp().

◆ bcsc_zspmv_get_balanced_indexes()

void bcsc_zspmv_get_balanced_indexes ( const pastix_data_t pastix_data,
struct z_argument_spmv_s *  args 
)

Initialize indexes for vector pointer and bloc indexes for parallel version of spmv.

This function Initial indexes for each thread in order to computes it once instead of once per thread. This is a more sophisticated version trying to balance the load for each thread in terms of bloc size.

Parameters
[in]pastix_dataThe pastix_data structure providing number of threads and holding the A matrix.
[out]argsThe argument containing arrays to initialise (blocs and indexes).

Definition at line 472 of file bcsc_zspmv.c.

References pastix_data_s::bcsc, solver_matrix_s::cblktab, bcsc_cblk_s::colnbr, bcsc_cblk_s::coltab, pastix_data_s::csc, solver_cblk_s::fcolnum, pastix_data_s::isched, pastix_int_t, PastixGeneral, and pastix_data_s::solvmatr.

Referenced by bcsc_zspmv_smp().

◆ pthread_bvec_saxpy()

static void pthread_bvec_saxpy ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute y <- alpha * x + y (Parallel version).

Parameters
[in]ctxThe context about the current thread
[in,out]argsThe parameter providing the size of the vectors, a scalar, the vectors x and y.

Definition at line 452 of file bvec_scompute.c.

References pastix_int_t.

Referenced by bvec_saxpy_smp().

◆ pthread_bvec_sdot()

static void pthread_bvec_sdot ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute the scalar product x.y. (Parallel version)

Parameters
[in]ctxThe context of the current thread.
[in]argsThe argument providing the vectors x and y and their size n.

Definition at line 772 of file bvec_scompute.c.

References pastix_int_t.

Referenced by bvec_sdot_smp().

◆ pthread_bvec_scopy()

static void pthread_bvec_scopy ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Copy a vector y = x (parallel version)

   Perform the coopy of x into y.
Parameters
[in]ctxThe context of the current thread
[in,out]argsThe argument containing the vector copy and the one to copy and their size.

Definition at line 930 of file bvec_scompute.c.

References pastix_int_t.

Referenced by bvec_scopy_smp().

◆ pthread_bvec_sgemv()

static void pthread_bvec_sgemv ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute.

\[ y = \alpha A x + \beta y \]

(Parallel version)

   This is the function called by bvec_sgemv_smp to perform gemv
   (Parallel version)
Parameters
[in]ctxInformation about number of thread and rank of current thread.
[in,out]argsThe number of rows (m) and columns (n) of the matrix A, vecteors y (size m) and x (size n), scalars alpha and beta. The dense matrix A of size lda-by-n, and its leading dimension lda >= max(1,m), and the vector x of size n. The result is stored in y.

Definition at line 1182 of file bvec_scompute.c.

References pastix_int_t.

Referenced by bvec_sgemv_smp().

◆ pthread_bvec_caxpy()

static void pthread_bvec_caxpy ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute y <- alpha * x + y (Parallel version).

Parameters
[in]ctxThe context about the current thread
[in,out]argsThe parameter providing the size of the vectors, a scalar, the vectors x and y.

Definition at line 452 of file bvec_ccompute.c.

References pastix_int_t.

Referenced by bvec_caxpy_smp().

◆ pthread_bvec_cdotu()

static void pthread_bvec_cdotu ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute the scalar product x.y. (Parallel version)

Parameters
[in]ctxThe context of the current thread.
[in]argsThe argument providing the vectors x and y and their size n.

Definition at line 772 of file bvec_ccompute.c.

References pastix_int_t.

Referenced by bvec_cdotu_smp().

◆ pthread_bvec_ccopy()

static void pthread_bvec_ccopy ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Copy a vector y = x (parallel version)

   Perform the coopy of x into y.
Parameters
[in]ctxThe context of the current thread
[in,out]argsThe argument containing the vector copy and the one to copy and their size.

Definition at line 930 of file bvec_ccompute.c.

References pastix_int_t.

Referenced by bvec_ccopy_smp().

◆ pthread_bvec_cgemv()

static void pthread_bvec_cgemv ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute.

\[ y = \alpha A x + \beta y \]

(Parallel version)

   This is the function called by bvec_cgemv_smp to perform gemv
   (Parallel version)
Parameters
[in]ctxInformation about number of thread and rank of current thread.
[in,out]argsThe number of rows (m) and columns (n) of the matrix A, vecteors y (size m) and x (size n), scalars alpha and beta. The dense matrix A of size lda-by-n, and its leading dimension lda >= max(1,m), and the vector x of size n. The result is stored in y.

Definition at line 1182 of file bvec_ccompute.c.

References pastix_int_t.

Referenced by bvec_cgemv_smp().

◆ pthread_bvec_daxpy()

static void pthread_bvec_daxpy ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute y <- alpha * x + y (Parallel version).

Parameters
[in]ctxThe context about the current thread
[in,out]argsThe parameter providing the size of the vectors, a scalar, the vectors x and y.

Definition at line 452 of file bvec_dcompute.c.

References pastix_int_t.

Referenced by bvec_daxpy_smp().

◆ pthread_bvec_ddot()

static void pthread_bvec_ddot ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute the scalar product x.y. (Parallel version)

Parameters
[in]ctxThe context of the current thread.
[in]argsThe argument providing the vectors x and y and their size n.

Definition at line 772 of file bvec_dcompute.c.

References pastix_int_t.

Referenced by bvec_ddot_smp().

◆ pthread_bvec_dcopy()

static void pthread_bvec_dcopy ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Copy a vector y = x (parallel version)

   Perform the coopy of x into y.
Parameters
[in]ctxThe context of the current thread
[in,out]argsThe argument containing the vector copy and the one to copy and their size.

Definition at line 930 of file bvec_dcompute.c.

References pastix_int_t.

Referenced by bvec_dcopy_smp().

◆ pthread_bvec_dgemv()

static void pthread_bvec_dgemv ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute.

\[ y = \alpha A x + \beta y \]

(Parallel version)

   This is the function called by bvec_dgemv_smp to perform gemv
   (Parallel version)
Parameters
[in]ctxInformation about number of thread and rank of current thread.
[in,out]argsThe number of rows (m) and columns (n) of the matrix A, vecteors y (size m) and x (size n), scalars alpha and beta. The dense matrix A of size lda-by-n, and its leading dimension lda >= max(1,m), and the vector x of size n. The result is stored in y.

Definition at line 1182 of file bvec_dcompute.c.

References pastix_int_t.

Referenced by bvec_dgemv_smp().

◆ pthread_bvec_zaxpy()

static void pthread_bvec_zaxpy ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute y <- alpha * x + y (Parallel version).

Parameters
[in]ctxThe context about the current thread
[in,out]argsThe parameter providing the size of the vectors, a scalar, the vectors x and y.

Definition at line 452 of file bvec_zcompute.c.

References pastix_int_t.

Referenced by bvec_zaxpy_smp().

◆ pthread_bvec_zdotu()

static void pthread_bvec_zdotu ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute the scalar product x.y. (Parallel version)

Parameters
[in]ctxThe context of the current thread.
[in]argsThe argument providing the vectors x and y and their size n.

Definition at line 772 of file bvec_zcompute.c.

References pastix_int_t.

Referenced by bvec_zdotu_smp().

◆ pthread_bvec_zcopy()

static void pthread_bvec_zcopy ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Copy a vector y = x (parallel version)

   Perform the coopy of x into y.
Parameters
[in]ctxThe context of the current thread
[in,out]argsThe argument containing the vector copy and the one to copy and their size.

Definition at line 930 of file bvec_zcompute.c.

References pastix_int_t.

Referenced by bvec_zcopy_smp().

◆ pthread_bvec_zgemv()

static void pthread_bvec_zgemv ( isched_thread_t *  ctx,
void *  args 
)
inlinestatic

Compute.

\[ y = \alpha A x + \beta y \]

(Parallel version)

   This is the function called by bvec_zgemv_smp to perform gemv
   (Parallel version)
Parameters
[in]ctxInformation about number of thread and rank of current thread.
[in,out]argsThe number of rows (m) and columns (n) of the matrix A, vecteors y (size m) and x (size n), scalars alpha and beta. The dense matrix A of size lda-by-n, and its leading dimension lda >= max(1,m), and the vector x of size n. The result is stored in y.

Definition at line 1182 of file bvec_zcompute.c.

References pastix_int_t.

Referenced by bvec_zgemv_smp().

◆ bvec_slapmr_shm()

static int bvec_slapmr_shm ( pastix_data_t pastix_data,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
float *  A,
pastix_int_t  lda,
pastix_rhs_t  PA 
)
inlinestatic

Apply a row permutation to a right hand side A (LAPACK xlatmr) in the shared memory case.

Parameters
[in]pastix_dataThe pastix_data structure.
[in]dirThe direction of the permutation. If PastixDirForward, A is permuted into PA. If PastixDirBackward, PA is permuted into A.
[in]mThe number of rows in the right hand side A, and the number of elements in perm.
[in]nThe number of columns in the right hand side A.
[in,out]AA right hand side of size lda-by-n. Referenced as input if dir is PastixDirForward, as output otherwise.
[in]ldaThe leading dimension of A.
[in,out]PAThe structure of the permuted right hand side A. Referenced as inout if dir is PastixDirForward, as input otherwise.
Return values
PASTIX_SUCCESS

Definition at line 668 of file bvec_slapmr.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::csc, pastix_data_s::iparm, IPARM_APPLYPERM_WS, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, pastix_data_s::ordemesh, orderGetExpandedPeritab(), PASTIX_ERR_BADPARAMETER, pastix_int_t, PASTIX_SUCCESS, and PastixDirBackward.

◆ bvec_slapmr()

int bvec_slapmr ( pastix_data_t pastix_data,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
float *  A,
pastix_int_t  lda,
pastix_rhs_t  PA 
)

Apply a row permutation to a right hand side A (LAPACK xlatmr)

Parameters
[in]pastix_dataThe pastix_data structure.
[in]dirThe direction of the permutation. If PastixDirForward, A is permuted into PA. If PastixDirBackward, PA is permuted into A.
[in]mThe number of rows in the right hand side A, and the number of elements in perm.
[in]nThe number of columns in the right hand side A.
[in,out]AA right hand side of size lda-by-n. Referenced as input if dir is PastixDirForward, as output otherwise.
[in]ldaThe leading dimension of A.
[in,out]PAThe structure of the permuted right hand side A. Referenced as inout if dir is PastixDirForward, as input otherwise.
Return values
PASTIX_SUCCESS

Definition at line 816 of file bvec_slapmr.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::bcsc, pastix_data_s::csc, pastix_rhs_s::flttype, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, PastixDirForward, and pastix_data_s::solvmatr.

Referenced by pastix_subtask_applyorder().

◆ bvec_clapmr_shm()

static int bvec_clapmr_shm ( pastix_data_t pastix_data,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
pastix_complex32_t A,
pastix_int_t  lda,
pastix_rhs_t  PA 
)
inlinestatic

Apply a row permutation to a right hand side A (LAPACK xlatmr) in the shared memory case.

Parameters
[in]pastix_dataThe pastix_data structure.
[in]dirThe direction of the permutation. If PastixDirForward, A is permuted into PA. If PastixDirBackward, PA is permuted into A.
[in]mThe number of rows in the right hand side A, and the number of elements in perm.
[in]nThe number of columns in the right hand side A.
[in,out]AA right hand side of size lda-by-n. Referenced as input if dir is PastixDirForward, as output otherwise.
[in]ldaThe leading dimension of A.
[in,out]PAThe structure of the permuted right hand side A. Referenced as inout if dir is PastixDirForward, as input otherwise.
Return values
PASTIX_SUCCESS

Definition at line 668 of file bvec_clapmr.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::csc, pastix_data_s::iparm, IPARM_APPLYPERM_WS, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, pastix_data_s::ordemesh, orderGetExpandedPeritab(), PASTIX_ERR_BADPARAMETER, pastix_int_t, PASTIX_SUCCESS, and PastixDirBackward.

◆ bvec_clapmr()

int bvec_clapmr ( pastix_data_t pastix_data,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
pastix_complex32_t A,
pastix_int_t  lda,
pastix_rhs_t  PA 
)

Apply a row permutation to a right hand side A (LAPACK xlatmr)

Parameters
[in]pastix_dataThe pastix_data structure.
[in]dirThe direction of the permutation. If PastixDirForward, A is permuted into PA. If PastixDirBackward, PA is permuted into A.
[in]mThe number of rows in the right hand side A, and the number of elements in perm.
[in]nThe number of columns in the right hand side A.
[in,out]AA right hand side of size lda-by-n. Referenced as input if dir is PastixDirForward, as output otherwise.
[in]ldaThe leading dimension of A.
[in,out]PAThe structure of the permuted right hand side A. Referenced as inout if dir is PastixDirForward, as input otherwise.
Return values
PASTIX_SUCCESS

Definition at line 816 of file bvec_clapmr.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::bcsc, pastix_data_s::csc, pastix_rhs_s::flttype, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, PastixDirForward, and pastix_data_s::solvmatr.

Referenced by pastix_subtask_applyorder().

◆ bvec_dlapmr_shm()

static int bvec_dlapmr_shm ( pastix_data_t pastix_data,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
double *  A,
pastix_int_t  lda,
pastix_rhs_t  PA 
)
inlinestatic

Apply a row permutation to a right hand side A (LAPACK xlatmr) in the shared memory case.

Parameters
[in]pastix_dataThe pastix_data structure.
[in]dirThe direction of the permutation. If PastixDirForward, A is permuted into PA. If PastixDirBackward, PA is permuted into A.
[in]mThe number of rows in the right hand side A, and the number of elements in perm.
[in]nThe number of columns in the right hand side A.
[in,out]AA right hand side of size lda-by-n. Referenced as input if dir is PastixDirForward, as output otherwise.
[in]ldaThe leading dimension of A.
[in,out]PAThe structure of the permuted right hand side A. Referenced as inout if dir is PastixDirForward, as input otherwise.
Return values
PASTIX_SUCCESS

Definition at line 668 of file bvec_dlapmr.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::csc, pastix_data_s::iparm, IPARM_APPLYPERM_WS, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, pastix_data_s::ordemesh, orderGetExpandedPeritab(), PASTIX_ERR_BADPARAMETER, pastix_int_t, PASTIX_SUCCESS, and PastixDirBackward.

◆ bvec_dlapmr()

int bvec_dlapmr ( pastix_data_t pastix_data,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
double *  A,
pastix_int_t  lda,
pastix_rhs_t  PA 
)

Apply a row permutation to a right hand side A (LAPACK xlatmr)

Parameters
[in]pastix_dataThe pastix_data structure.
[in]dirThe direction of the permutation. If PastixDirForward, A is permuted into PA. If PastixDirBackward, PA is permuted into A.
[in]mThe number of rows in the right hand side A, and the number of elements in perm.
[in]nThe number of columns in the right hand side A.
[in,out]AA right hand side of size lda-by-n. Referenced as input if dir is PastixDirForward, as output otherwise.
[in]ldaThe leading dimension of A.
[in,out]PAThe structure of the permuted right hand side A. Referenced as inout if dir is PastixDirForward, as input otherwise.
Return values
PASTIX_SUCCESS

Definition at line 816 of file bvec_dlapmr.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::bcsc, pastix_data_s::csc, pastix_rhs_s::flttype, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, PastixDirForward, and pastix_data_s::solvmatr.

Referenced by pastix_subtask_applyorder().

◆ bvec_zlapmr_shm()

static int bvec_zlapmr_shm ( pastix_data_t pastix_data,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
pastix_complex64_t *  A,
pastix_int_t  lda,
pastix_rhs_t  PA 
)
inlinestatic

Apply a row permutation to a right hand side A (LAPACK xlatmr) in the shared memory case.

Parameters
[in]pastix_dataThe pastix_data structure.
[in]dirThe direction of the permutation. If PastixDirForward, A is permuted into PA. If PastixDirBackward, PA is permuted into A.
[in]mThe number of rows in the right hand side A, and the number of elements in perm.
[in]nThe number of columns in the right hand side A.
[in,out]AA right hand side of size lda-by-n. Referenced as input if dir is PastixDirForward, as output otherwise.
[in]ldaThe leading dimension of A.
[in,out]PAThe structure of the permuted right hand side A. Referenced as inout if dir is PastixDirForward, as input otherwise.
Return values
PASTIX_SUCCESS

Definition at line 668 of file bvec_zlapmr.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::csc, pastix_data_s::iparm, IPARM_APPLYPERM_WS, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, pastix_data_s::ordemesh, orderGetExpandedPeritab(), PASTIX_ERR_BADPARAMETER, pastix_int_t, PASTIX_SUCCESS, and PastixDirBackward.

◆ bvec_zlapmr()

int bvec_zlapmr ( pastix_data_t pastix_data,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
pastix_complex64_t *  A,
pastix_int_t  lda,
pastix_rhs_t  PA 
)

Apply a row permutation to a right hand side A (LAPACK xlatmr)

Parameters
[in]pastix_dataThe pastix_data structure.
[in]dirThe direction of the permutation. If PastixDirForward, A is permuted into PA. If PastixDirBackward, PA is permuted into A.
[in]mThe number of rows in the right hand side A, and the number of elements in perm.
[in]nThe number of columns in the right hand side A.
[in,out]AA right hand side of size lda-by-n. Referenced as input if dir is PastixDirForward, as output otherwise.
[in]ldaThe leading dimension of A.
[in,out]PAThe structure of the permuted right hand side A. Referenced as inout if dir is PastixDirForward, as input otherwise.
Return values
PASTIX_SUCCESS

Definition at line 816 of file bvec_zlapmr.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::bcsc, pastix_data_s::csc, pastix_rhs_s::flttype, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, PastixDirForward, and pastix_data_s::solvmatr.

Referenced by pastix_subtask_applyorder().