PaStiX Handbook  6.3.2
Sparse matrix blocked CSC structure

Describe all the internals routines to manipulate the internal block csc. More...

Modules

 Internal functions to the sparse matrix blocked CSC module
 

Data Structures

struct  bcsc_data_amount_s
 Information about the amount of data. More...
 
struct  bcsc_exch_comm_s
 Information about the sending data. More...
 
struct  bcsc_proc_comm_s
 Informations of the data exchanged with other processors. More...
 
struct  bcsc_handle_comm_s
 Structure to manage communications with distributed spm. More...
 
struct  bcsc_cblk_s
 Compressed colptr format for the bcsc. More...
 
struct  pastix_bcsc_s
 Internal column block distributed CSC matrix. More...
 
struct  bvec_data_amount_s
 Information about the amount of data exchanged to permute the pivots. More...
 
struct  bvec_proc_comm_s
 Informations of the data exchanged with other processes. More...
 
struct  bvec_handle_comm_s
 Structure to manage communications with distributed rhs. More...
 

Typedefs

typedef enum bcsc_tag_ bcsc_tag_e
 Tags used in MPI communications.
 
typedef struct bcsc_data_amount_s bcsc_data_amount_t
 Information about the amount of data.
 
typedef struct bcsc_exch_comm_s bcsc_exch_comm_t
 Information about the sending data.
 
typedef struct bcsc_proc_comm_s bcsc_proc_comm_t
 Informations of the data exchanged with other processors.
 
typedef struct bcsc_handle_comm_s bcsc_handle_comm_t
 Structure to manage communications with distributed spm.
 
typedef struct bcsc_cblk_s bcsc_cblk_t
 Compressed colptr format for the bcsc.
 
typedef enum bvec_tag_ bvec_tag_e
 Tags used in MPI communications.
 
typedef struct bvec_data_amount_s bvec_data_amount_t
 Information about the amount of data exchanged to permute the pivots.
 
typedef struct bvec_proc_comm_s bvec_proc_comm_t
 Informations of the data exchanged with other processes.
 
typedef struct bvec_handle_comm_s bvec_handle_comm_t
 Structure to manage communications with distributed rhs.
 

Enumerations

enum  bcsc_tag_ {
  PastixTagCountA , PastixTagCountAt , PastixTagCountAAt , PastixTagIndexesA ,
  PastixTagIndexesAt , PastixTagIndexesAAt , PastixTagValuesA , PastixTagValuesAt ,
  PastixTagValuesAAt , PastixTagMemSendIdx , PastixTagMemRecvIdx , PastixTagMemSend ,
  PastixTagMemRecvAAt , PastixTagMemSendValA , PastixTagMemSendValAt , PastixTagMemSendValAAt ,
  PastixTagMemRecvIdxA , PastixTagMemRecvIdxAt , PastixTagMemRecvIdxAAt , PastixTagMemRecvValAAt
}
 Tags used in MPI communications.
 
enum  bvec_tag_ { PastixTagAmount , PastixTagIndexes , PastixTagValues }
 Tags used in MPI communications.
 

Functions

double bcscInit (const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_int_t initAt, pastix_bcsc_t *bcsc)
 Initializes the block csc matrix. More...
 
void bcscExit (pastix_bcsc_t *bcsc)
 Frees the block csc structure but do not free the bcsc pointer. More...
 
void * bvec_malloc (size_t size)
 Allocate a vector. More...
 
void bvec_free (void *x)
 Free a vector. More...
 
int pastixRhsInit (pastix_rhs_t *B_ptr)
 Initialize an RHS data structure. More...
 
int pastixRhsFinalize (pastix_rhs_t B)
 Cleanup an RHS data structure. More...
 
static void pthread_bvec_znrm2 (isched_thread_t *ctx, void *args)
 Compute the norm 2 of a vector. (Parallel version) More...
 
static void pthread_bvec_zscal (isched_thread_t *ctx, void *args)
 Scale a vector (Parallel version) More...
 
static void pthread_bvec_dnrm2 (isched_thread_t *ctx, void *args)
 Compute the norm 2 of a vector. (Parallel version) More...
 
static void pthread_bvec_dscal (isched_thread_t *ctx, void *args)
 Scale a vector (Parallel version) More...
 
static void pthread_bvec_cnrm2 (isched_thread_t *ctx, void *args)
 Compute the norm 2 of a vector. (Parallel version) More...
 
static void pthread_bvec_cscal (isched_thread_t *ctx, void *args)
 Scale a vector (Parallel version) More...
 
static void pthread_bvec_snrm2 (isched_thread_t *ctx, void *args)
 Compute the norm 2 of a vector. (Parallel version) More...
 
static void pthread_bvec_sscal (isched_thread_t *ctx, void *args)
 Scale a vector (Parallel version) More...
 

PastixDouble vector(s) operations

void bvec_daxpy_seq (pastix_data_t *pastix_data, pastix_int_t n, double alpha, const double *x, double *y)
 Compute y <- alpha * x + y. (Sequential version) More...
 
void bvec_daxpy_smp (pastix_data_t *pastix_data, pastix_int_t n, double alpha, const double *x, double *y)
 Perform y = alpha * x + y (Parallel version) More...
 
void bvec_dcopy_seq (pastix_data_t *pastix_data, pastix_int_t n, const double *x, double *y)
 Copy a vector y = x (Sequential version) More...
 
void bvec_dcopy_smp (pastix_data_t *pastix_data, pastix_int_t n, const double *x, double *y)
 Copy a vector y = x (parallel version) More...
 
double bvec_ddot_seq (pastix_data_t *pastix_data, pastix_int_t n, const double *x, const double *y)
 Compute the scalar product x.y. (Sequential version) More...
 
double bvec_ddot_smp (pastix_data_t *pastix_data, pastix_int_t n, const double *x, const double *y)
 Compute a regular scalar product x.y (Parallel version) More...
 
void bvec_dgemv_seq (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, double alpha, const double *A, pastix_int_t lda, const double *x, double beta, double *y)
 Compute. More...
 
void bvec_dgemv_smp (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, double alpha, const double *A, pastix_int_t lda, const double *x, double beta, double *y)
 Compute. More...
 
double bvec_dnrm2_seq (pastix_data_t *pastix_data, pastix_int_t n, const double *x)
 Compute the norm 2 of a vector. (Sequential version) More...
 
double bvec_dnrm2_smp (pastix_data_t *pastix_data, pastix_int_t n, const double *x)
 Compute the norm 2 of a vector. (Parallel version) More...
 
void bvec_dscal_seq (pastix_data_t *pastix_data, pastix_int_t n, double alpha, double *x)
 Scale a vector by the scalar alpha. (Sequential version) More...
 
void bvec_dscal_smp (pastix_data_t *pastix_data, pastix_int_t n, double alpha, double *x)
 Scale a vector (Parallel version) 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...
 

PastixDouble matrix operations

double bcsc_dnorm (pastix_normtype_t ntype, const pastix_bcsc_t *bcsc)
 Compute the norm of an bcsc matrix. More...
 
void bcsc_dspsv (pastix_data_t *pastix_data, double *b, float *work)
 Solve A x = b with A the sparse matrix. More...
 
void bcsc_dspmv (const pastix_data_t *pastix_data, pastix_trans_t trans, double alpha, const double *x, double beta, double *y)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void bcsc_dspmv_seq (const pastix_data_t *pastix_data, pastix_trans_t trans, double alpha, const double *x, double beta, double *y)
 Compute the matrix-vector product y = alpha * A * x + beta * y (Sequential version) More...
 
void bcsc_dspmv_smp (const pastix_data_t *pastix_data, pastix_trans_t trans, double alpha, const double *x, double beta, double *y)
 Perform y = alpha A x + beta y (Parallel version) More...
 

PastixDouble MPI vector operations

const double * bvec_dgather_remote (const pastix_data_t *pastix_data, const double *y)
 Gather a distributed right hand side (bvec storage) on all nodes. More...
 
void bvec_dnullify_remote (const pastix_data_t *pastix_data, double *y)
 Set to 0 remote coefficients. More...
 
void bvec_dallreduce (const pastix_data_t *pastix_data, double *y)
 Apply an all reduce of the vector on all nodes. More...
 

PastixComplex64 vector(s) operations

void bvec_zaxpy_seq (pastix_data_t *pastix_data, pastix_int_t n, pastix_complex64_t alpha, const pastix_complex64_t *x, pastix_complex64_t *y)
 Compute y <- alpha * x + y. (Sequential version) More...
 
void bvec_zaxpy_smp (pastix_data_t *pastix_data, pastix_int_t n, pastix_complex64_t alpha, const pastix_complex64_t *x, pastix_complex64_t *y)
 Perform y = alpha * x + y (Parallel version) More...
 
void bvec_zcopy_seq (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex64_t *x, pastix_complex64_t *y)
 Copy a vector y = x (Sequential version) More...
 
void bvec_zcopy_smp (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex64_t *x, pastix_complex64_t *y)
 Copy a vector y = x (parallel version) More...
 
pastix_complex64_t bvec_zdotu_seq (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex64_t *x, const pastix_complex64_t *y)
 Compute the scalar product x.y. (Sequential version) More...
 
pastix_complex64_t bvec_zdotu_smp (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex64_t *x, const pastix_complex64_t *y)
 Compute a regular scalar product x.y (Parallel version) More...
 
void bvec_zgemv_seq (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, pastix_complex64_t alpha, const pastix_complex64_t *A, pastix_int_t lda, const pastix_complex64_t *x, pastix_complex64_t beta, pastix_complex64_t *y)
 Compute. More...
 
void bvec_zgemv_smp (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, pastix_complex64_t alpha, const pastix_complex64_t *A, pastix_int_t lda, const pastix_complex64_t *x, pastix_complex64_t beta, pastix_complex64_t *y)
 Compute. More...
 
double bvec_znrm2_seq (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex64_t *x)
 Compute the norm 2 of a vector. (Sequential version) More...
 
double bvec_znrm2_smp (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex64_t *x)
 Compute the norm 2 of a vector. (Parallel version) More...
 
void bvec_zscal_seq (pastix_data_t *pastix_data, pastix_int_t n, pastix_complex64_t alpha, pastix_complex64_t *x)
 Scale a vector by the scalar alpha. (Sequential version) More...
 
void bvec_zscal_smp (pastix_data_t *pastix_data, pastix_int_t n, pastix_complex64_t alpha, pastix_complex64_t *x)
 Scale a vector (Parallel version) 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...
 

PastixComplex64 matrix operations

double bcsc_znorm (pastix_normtype_t ntype, const pastix_bcsc_t *bcsc)
 Compute the norm of an bcsc matrix. More...
 
void bcsc_zspsv (pastix_data_t *pastix_data, pastix_complex64_t *b, pastix_complex32_t *work)
 Solve A x = b with A the sparse matrix. More...
 
void bcsc_zspmv (const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex64_t alpha, const pastix_complex64_t *x, pastix_complex64_t beta, pastix_complex64_t *y)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void bcsc_zspmv_seq (const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex64_t alpha, const pastix_complex64_t *x, pastix_complex64_t beta, pastix_complex64_t *y)
 Compute the matrix-vector product y = alpha * A * x + beta * y (Sequential version) More...
 
void bcsc_zspmv_smp (const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex64_t alpha, const pastix_complex64_t *x, pastix_complex64_t beta, pastix_complex64_t *y)
 Perform y = alpha A x + beta y (Parallel version) More...
 

PastixComplex64 MPI vector operations

const pastix_complex64_t * bvec_zgather_remote (const pastix_data_t *pastix_data, const pastix_complex64_t *y)
 Gather a distributed right hand side (bvec storage) on all nodes. More...
 
void bvec_znullify_remote (const pastix_data_t *pastix_data, pastix_complex64_t *y)
 Set to 0 remote coefficients. More...
 
void bvec_zallreduce (const pastix_data_t *pastix_data, pastix_complex64_t *y)
 Apply an all reduce of the vector on all nodes. More...
 

PastixComplex32 vector(s) operations

void bvec_caxpy_seq (pastix_data_t *pastix_data, pastix_int_t n, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t *y)
 Compute y <- alpha * x + y. (Sequential version) More...
 
void bvec_caxpy_smp (pastix_data_t *pastix_data, pastix_int_t n, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t *y)
 Perform y = alpha * x + y (Parallel version) More...
 
void bvec_ccopy_seq (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x, pastix_complex32_t *y)
 Copy a vector y = x (Sequential version) More...
 
void bvec_ccopy_smp (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x, pastix_complex32_t *y)
 Copy a vector y = x (parallel version) More...
 
pastix_complex32_t bvec_cdotu_seq (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x, const pastix_complex32_t *y)
 Compute the scalar product x.y. (Sequential version) More...
 
pastix_complex32_t bvec_cdotu_smp (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x, const pastix_complex32_t *y)
 Compute a regular scalar product x.y (Parallel version) More...
 
void bvec_cgemv_seq (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, pastix_complex32_t alpha, const pastix_complex32_t *A, pastix_int_t lda, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
 Compute. More...
 
void bvec_cgemv_smp (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, pastix_complex32_t alpha, const pastix_complex32_t *A, pastix_int_t lda, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
 Compute. More...
 
float bvec_cnrm2_seq (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x)
 Compute the norm 2 of a vector. (Sequential version) More...
 
float bvec_cnrm2_smp (pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x)
 Compute the norm 2 of a vector. (Parallel version) More...
 
void bvec_cscal_seq (pastix_data_t *pastix_data, pastix_int_t n, pastix_complex32_t alpha, pastix_complex32_t *x)
 Scale a vector by the scalar alpha. (Sequential version) More...
 
void bvec_cscal_smp (pastix_data_t *pastix_data, pastix_int_t n, pastix_complex32_t alpha, pastix_complex32_t *x)
 Scale a vector (Parallel version) 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...
 

PastixComplex32 matrix operations

float bcsc_cnorm (pastix_normtype_t ntype, const pastix_bcsc_t *bcsc)
 Compute the norm of an bcsc matrix. More...
 
void bcsc_cspsv (pastix_data_t *pastix_data, pastix_complex32_t *b, pastix_complex32_t *work)
 Solve A x = b with A the sparse matrix. More...
 
void bcsc_cspmv (const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void bcsc_cspmv_seq (const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
 Compute the matrix-vector product y = alpha * A * x + beta * y (Sequential version) More...
 
void bcsc_cspmv_smp (const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
 Perform y = alpha A x + beta y (Parallel version) More...
 

PastixComplex32 MPI vector operations

const pastix_complex32_tbvec_cgather_remote (const pastix_data_t *pastix_data, const pastix_complex32_t *y)
 Gather a distributed right hand side (bvec storage) on all nodes. More...
 
void bvec_cnullify_remote (const pastix_data_t *pastix_data, pastix_complex32_t *y)
 Set to 0 remote coefficients. More...
 
void bvec_callreduce (const pastix_data_t *pastix_data, pastix_complex32_t *y)
 Apply an all reduce of the vector on all nodes. More...
 

PastixFloat vector(s) operations

void bvec_saxpy_seq (pastix_data_t *pastix_data, pastix_int_t n, float alpha, const float *x, float *y)
 Compute y <- alpha * x + y. (Sequential version) More...
 
void bvec_saxpy_smp (pastix_data_t *pastix_data, pastix_int_t n, float alpha, const float *x, float *y)
 Perform y = alpha * x + y (Parallel version) More...
 
void bvec_scopy_seq (pastix_data_t *pastix_data, pastix_int_t n, const float *x, float *y)
 Copy a vector y = x (Sequential version) More...
 
void bvec_scopy_smp (pastix_data_t *pastix_data, pastix_int_t n, const float *x, float *y)
 Copy a vector y = x (parallel version) More...
 
float bvec_sdot_seq (pastix_data_t *pastix_data, pastix_int_t n, const float *x, const float *y)
 Compute the scalar product x.y. (Sequential version) More...
 
float bvec_sdot_smp (pastix_data_t *pastix_data, pastix_int_t n, const float *x, const float *y)
 Compute a regular scalar product x.y (Parallel version) More...
 
void bvec_sgemv_seq (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, float alpha, const float *A, pastix_int_t lda, const float *x, float beta, float *y)
 Compute. More...
 
void bvec_sgemv_smp (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, float alpha, const float *A, pastix_int_t lda, const float *x, float beta, float *y)
 Compute. More...
 
float bvec_snrm2_seq (pastix_data_t *pastix_data, pastix_int_t n, const float *x)
 Compute the norm 2 of a vector. (Sequential version) More...
 
float bvec_snrm2_smp (pastix_data_t *pastix_data, pastix_int_t n, const float *x)
 Compute the norm 2 of a vector. (Parallel version) More...
 
void bvec_sscal_seq (pastix_data_t *pastix_data, pastix_int_t n, float alpha, float *x)
 Scale a vector by the scalar alpha. (Sequential version) More...
 
void bvec_sscal_smp (pastix_data_t *pastix_data, pastix_int_t n, float alpha, float *x)
 Scale a vector (Parallel version) 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...
 

PastixFloat matrix operations

float bcsc_snorm (pastix_normtype_t ntype, const pastix_bcsc_t *bcsc)
 Compute the norm of an bcsc matrix. More...
 
void bcsc_sspsv (pastix_data_t *pastix_data, float *b, float *work)
 Solve A x = b with A the sparse matrix. More...
 
void bcsc_sspmv (const pastix_data_t *pastix_data, pastix_trans_t trans, float alpha, const float *x, float beta, float *y)
 Compute the matrix-vector product y = alpha * op(A) * x + beta * y. More...
 
void bcsc_sspmv_seq (const pastix_data_t *pastix_data, pastix_trans_t trans, float alpha, const float *x, float beta, float *y)
 Compute the matrix-vector product y = alpha * A * x + beta * y (Sequential version) More...
 
void bcsc_sspmv_smp (const pastix_data_t *pastix_data, pastix_trans_t trans, float alpha, const float *x, float beta, float *y)
 Perform y = alpha A x + beta y (Parallel version) More...
 

PastixFloat MPI vector operations

const float * bvec_sgather_remote (const pastix_data_t *pastix_data, const float *y)
 Gather a distributed right hand side (bvec storage) on all nodes. More...
 
void bvec_snullify_remote (const pastix_data_t *pastix_data, float *y)
 Set to 0 remote coefficients. More...
 
void bvec_sallreduce (const pastix_data_t *pastix_data, float *y)
 Apply an all reduce of the vector on all nodes. More...
 

Detailed Description

Describe all the internals routines to manipulate the internal block csc.

These functions provide a set of subroutines to manipulate the permuted sparse matrix stored in block of columns following the partition.


Data Type Documentation

◆ bcsc_data_amount_s

struct bcsc_data_amount_s

Information about the amount of data.

Definition at line 55 of file bcsc.h.

Data Fields
pastix_int_t idxcnt

Amount of indexes of A or At which will be exchanged.

pastix_int_t valcnt

Amount of values of A or At which will be exchanged.

◆ bcsc_exch_comm_s

struct bcsc_exch_comm_s

Information about the sending data.

Definition at line 64 of file bcsc.h.

Data Fields
bcsc_data_amount_t size

Amount of indexes of A which will be send to clustnum.

pastix_int_t * idxbuf

Array of indexes of A to send to clustnum.

void * valbuf

Array of values of A to send to clustnum.

◆ bcsc_proc_comm_s

struct bcsc_proc_comm_s

Informations of the data exchanged with other processors.

Definition at line 78 of file bcsc.h.

Data Fields
bcsc_exch_comm_t sendA

Sending data of A.

bcsc_exch_comm_t sendAt

Sending data of At.

bcsc_exch_comm_t sendAAt

Sending data of A and At.

bcsc_data_amount_t recvA

Receving data of A.

bcsc_data_amount_t recvAt

Receving data of At.

bcsc_exch_comm_t recvAAt

Receving data of A and At.

◆ bcsc_handle_comm_s

struct bcsc_handle_comm_s

Structure to manage communications with distributed spm.

Definition at line 91 of file bcsc.h.

Data Fields
pastix_int_t clustnbr

Number of processes in the cluster.

pastix_int_t clustnum

ID of the current process in the cluster.

PASTIX_Comm comm

PaStiX MPI communicator used for the ordering step.

pastix_coeftype_t flttype

valtab datatype: PastixFloat, PastixDouble, PastixComplex32 or PastixComplex64

pastix_int_t max_idx

Maximum amount of indexes received, used to allocate the receiving buffer.

pastix_int_t max_val

Maximum amount of values received, used to allocate the receiving buffer.

bcsc_proc_comm_t data_comm[1]

Array of size clustnbr.

◆ bcsc_cblk_s

struct bcsc_cblk_s

Compressed colptr format for the bcsc.

Definition at line 110 of file bcsc.h.

Data Fields
pastix_int_t colnbr

Number of columns in the block column.

pastix_int_t cblknum

Index of the corresponding cblk in the local solver matrix

pastix_int_t * coltab

Array of indexes of the start of each column in the row and value arrays.

◆ pastix_bcsc_s

struct pastix_bcsc_s

Internal column block distributed CSC matrix.

Definition at line 119 of file bcsc.h.

Data Fields
pastix_int_t gN

Global number of vertices

pastix_int_t n

Local number of vertices

pastix_mtxtype_t mtxtype

Matrix structure: PastixGeneral, PastixSymmetric or PastixHermitian.

pastix_coeftype_t flttype

valtab datatype: PastixFloat, PastixDouble, PastixComplex32 or PastixComplex64

pastix_int_t cscfnbr

Number of column blocks.

bcsc_cblk_t * cscftab

Array of Block column structures of size cscfnbr. (pastix_bcscFormat_t)

pastix_int_t * rowtab

Array of rows in the matrix.

void * Lvalues

Array of values of the matrix A

void * Uvalues

Array of values of the matrix A^t

pastix_int_t * col2cblk

Array which gives the repartition of the solvmtx columns into the block structure.

bcsc_handle_comm_t * bcsc_comm

Structure which handles the MPI communication (= NULL if PASTIX_WITH_MPI=OFF).

◆ bvec_data_amount_s

struct bvec_data_amount_s

Information about the amount of data exchanged to permute the pivots.

Definition at line 37 of file bvec.h.

Data Fields
pastix_int_t idxcnt

Amount of indexes of b or x which will be exchanged.

pastix_int_t valcnt

Amount of values of b or x which will be exchanged.

◆ bvec_proc_comm_s

struct bvec_proc_comm_s

Informations of the data exchanged with other processes.

Definition at line 48 of file bvec.h.

Data Fields
bvec_data_amount_t nsends

Number of indexes and values to send to clustnum.

bvec_data_amount_t nrecvs

Number of indexes and values to receive from clustnum.

pastix_int_t * send_idxbuf

Array of indexes of b or x to exchange.

void * send_valbuf

Array of values of b or x to exchange.

◆ bvec_handle_comm_s

struct bvec_handle_comm_s

Structure to manage communications with distributed rhs.

Definition at line 65 of file bvec.h.

Data Fields
pastix_int_t clustnbr

Number of processes in the communicator.

pastix_int_t clustnum

ID of the current process in the communicator.

PASTIX_Comm comm

PaStiX MPI communicator used for the ordering step.

pastix_coeftype_t flttype

valtab datatype: PastixFloat, PastixDouble, PastixComplex32 or PastixComplex64

pastix_int_t max_idx

Maximum amount of indexes received, used to allocate the receiving buffer.

pastix_int_t max_val

Maximum amount of values received, used to allocate the receiving buffer.

bvec_proc_comm_t data_comm[1]

Array of size clustnbr.

Function Documentation

◆ bcscInit()

double bcscInit ( const spmatrix_t *  spm,
const pastix_order_t ord,
const SolverMatrix solvmtx,
pastix_int_t  initAt,
pastix_bcsc_t *  bcsc 
)

Initializes the block csc matrix.

The block csc matrix is used to initialize the factorized matrix, and to perform the matvec operations in refinement.

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]initAtThe test to know if At has to be initialized:
  • if initAt = 0 then the matrix is symmetric of hermitian which means that Lvalues = Uvalues so At does not need to be initialised.
  • if initAt = 1 then the matrix is general which means that At needs to be initialised and computed.
[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.
Returns
The time spent to initialize the bcsc structure.

Definition at line 1887 of file bcsc.c.

References pastix_order_s::baseval, bcsc_init(), and pastix_order_s::vertnbr.

Referenced by pastix_subtask_spm2bcsc().

◆ bcscExit()

void bcscExit ( pastix_bcsc_t *  bcsc)

Frees the block csc structure but do not free the bcsc pointer.

Parameters
[in,out]bcscThe block csc matrix to free.

Definition at line 1917 of file bcsc.c.

References bcsc_exit_struct(), bcsc_cblk_s::coltab, and pastix_int_t.

Referenced by pastix_subtask_spm2bcsc(), and pastixFinalize().

◆ bvec_malloc()

void * bvec_malloc ( size_t  size)

Allocate a vector.

Parameters
[in]sizeThe size of the vector
Returns
The allocated vector

Definition at line 42 of file bvec.c.

Referenced by c_refine_init(), d_refine_init(), s_refine_init(), and z_refine_init().

◆ bvec_free()

void bvec_free ( void *  x)

Free a vector.

Parameters
[in,out]xThe vector to be free

Definition at line 62 of file bvec.c.

Referenced by c_refine_init(), d_refine_init(), s_refine_init(), and z_refine_init().

◆ pastixRhsInit()

int pastixRhsInit ( pastix_rhs_t B_ptr)

Initialize an RHS data structure.

Parameters
[in,out]B_ptrOn entry, an allocated pastix_rhs_t data structure. On exit, the data is initialized to be used by the pastix_subtask_* functions.
Return values
PASTIX_SUCCESSon successful exit,
PASTIX_ERR_BADPARAMETERif one parameter is incorrect.

Definition at line 41 of file pastix_rhs.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_rhs_s::cblkb, pastix_rhs_s::flttype, pastix_rhs_s::ld, pastix_rhs_s::m, pastix_rhs_s::n, PASTIX_ERR_BADPARAMETER, PASTIX_SUCCESS, pastix_rhs_s::Ploc2Pglob, and pastix_rhs_s::rhs_comm.

Referenced by pastix_subtask_solve_adv(), and pastix_task_solve().

◆ pastixRhsFinalize()

int pastixRhsFinalize ( pastix_rhs_t  B)

Cleanup an RHS data structure.

Parameters
[in,out]BOn entry, the initialized pastix_rhs_t data structure. On exit, the structure is destroyed and should no longer be used.
Return values
PASTIX_SUCCESSon successful exit,
PASTIX_ERR_BADPARAMETERif one parameter is incorrect.

Definition at line 86 of file pastix_rhs.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_rhs_s::cblkb, PASTIX_ERR_BADPARAMETER, PASTIX_SUCCESS, pastix_rhs_s::Ploc2Pglob, and pastix_rhs_s::rhs_comm.

Referenced by pastix_subtask_solve_adv(), and pastix_task_solve().

◆ bvec_daxpy_seq()

void bvec_daxpy_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
double  alpha,
const double *  x,
double *  y 
)

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

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...). -*
[in]nThe size of the vectors.
[in]alphaA scalar.
[in]xThe vector x.
[in,out]yThe vector y.

Definition at line 398 of file bvec_dcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by d_refine_init().

◆ bvec_daxpy_smp()

void bvec_daxpy_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
double  alpha,
const double *  x,
double *  y 
)

Perform y = alpha * x + y (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]alphaThe scalar to scale x
[in]xThe vector to be scaled
[in,out]yThe resulting solution

Definition at line 513 of file bvec_dcompute.c.

References pastix_data_s::isched, and pthread_bvec_daxpy().

Referenced by d_refine_init().

◆ bvec_dcopy_seq()

void bvec_dcopy_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const double *  x,
double *  y 
)

Copy a vector y = x (Sequential version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]xThe vector to be copied
[in,out]yThe vector copy of x

Definition at line 879 of file bvec_dcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by d_refine_init().

◆ bvec_dcopy_smp()

void bvec_dcopy_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const double *  x,
double *  y 
)

Copy a vector y = x (parallel version)

   Initialise argument for the parallel function
Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]xThe vector to be copied
[in,out]yThe vector copy of x

Definition at line 980 of file bvec_dcompute.c.

References pastix_data_s::isched, and pthread_bvec_dcopy().

Referenced by d_refine_init().

◆ bvec_ddot_seq()

double bvec_ddot_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const double *  x,
const double *  y 
)

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

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]xThe vector x.
[in]yThe vector y.
[in]nThe size of the vectors.
Return values
thescalar product of x and y.

Definition at line 721 of file bvec_dcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by d_refine_init().

◆ bvec_ddot_smp()

double bvec_ddot_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const double *  x,
const double *  y 
)

Compute a regular scalar product x.y (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x, y and r
[in]xThe first vector of the scalar product
[in]yThe second vector of the scalar product
Returns
The allocated vector

Definition at line 839 of file bvec_dcompute.c.

References pastix_data_s::isched, and pthread_bvec_ddot().

Referenced by d_refine_init().

◆ bvec_dgemv_seq()

void bvec_dgemv_seq ( pastix_data_t pastix_data,
pastix_int_t  m,
pastix_int_t  n,
double  alpha,
const double *  A,
pastix_int_t  lda,
const double *  x,
double  beta,
double *  y 
)

Compute.

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

(Sequential version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]mThe number of rows of the matrix A, and the size of y.
[in]nThe number of columns of the matrix A, and the size of x.
[in]alphaThe scalar alpha.
[in]AThe dense matrix A of size lda-by-n.
[in]ldaThe leading dimension of the matrix A. lda >= max(1,m)
[in]xThe vector x of size n.
[in]betaThe scalar beta.
[in,out]yOn entry, the initial vector y of size m. On exit, the updated vector.

Definition at line 1112 of file bvec_dcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_rhs_s::m, pastix_rhs_s::n, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by d_refine_init().

◆ bvec_dgemv_smp()

void bvec_dgemv_smp ( pastix_data_t pastix_data,
pastix_int_t  m,
pastix_int_t  n,
double  alpha,
const double *  A,
pastix_int_t  lda,
const double *  x,
double  beta,
double *  y 
)

Compute.

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

(Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]mThe number of rows of the matrix A, and the size of y.
[in]nThe number of columns of the matrix A, and the size of x.
[in]alphaThe scalar alpha.
[in]AThe dense matrix A of size lda-by-n.
[in]ldaThe leading dimension of the matrix A. lda >= max(1,m)
[in]xThe vector x of size n.
[in]betaThe scalar beta.
[in,out]yOn entry, the initial vector y of size m. On exit, the updated vector.

Definition at line 1262 of file bvec_dcompute.c.

References pastix_data_s::isched, and pthread_bvec_dgemv().

Referenced by d_refine_init().

◆ bvec_dnrm2_seq()

double bvec_dnrm2_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const double *  x 
)

Compute the norm 2 of a vector. (Sequential version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]nThe size of the vector x.
[in]xThe vector x of size n.
Return values
thenorm 2 of x.

Definition at line 71 of file bvec_dcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by d_refine_init().

◆ bvec_dnrm2_smp()

double bvec_dnrm2_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const double *  x 
)

Compute the norm 2 of a vector. (Parallel version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]xThe vector which norm2 is to be computed
[in]nThe number of elements of x
Returns
The norm 2 of the vector

Definition at line 215 of file bvec_dcompute.c.

References pastix_data_s::isched, pthread_bvec_dnrm2(), and pastix_data_s::solvmatr.

Referenced by d_refine_init().

◆ bvec_dscal_seq()

void bvec_dscal_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
double  alpha,
double *  x 
)

Scale a vector by the scalar alpha. (Sequential version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]nThe size of the vector x.
[in]alphaThe scalar to scale the vector x.
[in,out]xThe vector x to scale.

Definition at line 259 of file bvec_dcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by d_refine_init().

◆ bvec_dscal_smp()

void bvec_dscal_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
double  alpha,
double *  x 
)

Scale a vector (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of the vector
[in]alphaThe scaling parameter
[in,out]xThe vector to be scaled

Definition at line 362 of file bvec_dcompute.c.

References pastix_data_s::isched, and pthread_bvec_dscal().

Referenced by d_refine_init().

◆ 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().

◆ bcsc_dnorm()

double bcsc_dnorm ( pastix_normtype_t  ntype,
const pastix_bcsc_t *  bcsc 
)

Compute the norm of an bcsc matrix.

Parameters
[in]ntype= PastixMaxNorm: Max norm = PastixOneNorm: One norm = PastixInfNorm: Infinity norm = PastixFrobeniusNorm: Frobenius norm
[in]bcscThe bcsc structure describing the matrix.
Return values
Thenorm of the matrix.

Definition at line 252 of file bcsc_dnorm.c.

References bcsc_dnorm_frobenius(), bcsc_dnorm_inf(), bcsc_dnorm_max(), bcsc_dnorm_one(), PastixFrobeniusNorm, PastixInfNorm, PastixMaxNorm, and PastixOneNorm.

◆ bcsc_dspsv()

void bcsc_dspsv ( pastix_data_t pastix_data,
double *  b,
float *  work 
)

Solve A x = b with A the sparse matrix.

In Complex64 and Double precision and if mixed-precision is enabled, solve SA sx = sb with SA the sparse matrix previously initialized respectively in Complex32 or Float precision.

Parameters
[in]pastix_dataThe PaStiX data structure that describes the solver instance.
[in,out]bOn entry, the right hand side On exit, the solution of the problem A x = b
[in,out]workOn entry, if mixed-precision is disabled or incompatible with the sparse matrix's precision, the normal solve function is called and work must be NULL. On exit, works stays NULL If mixed-precision is enabled, work must be allocated as a vector half the size of b, so that the solve function can be performed in in mixed-precision. On exit, work is undefined.

Definition at line 1017 of file bvec_dcompute.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::bcsc, pastix_rhs_s::cblkb, pastix_rhs_s::flttype, pastix_data_s::iparm, IPARM_MIXED, IPARM_VERBOSE, pastix_rhs_s::m, pastix_rhs_s::n, pastix_int_t, and pastix_subtask_solve().

Referenced by d_refine_init().

◆ bcsc_dspmv()

void bcsc_dspmv ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
double  alpha,
const double *  x,
double  beta,
double *  y 
)

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

This function is used only in testings.

Parameters
[in]pastix_dataProvide information about bcsc, and select the scheduling version based on iparm[IPARM_SCHEDULER].
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixTrans: A is conjugate transposed.
[in]alphaalpha specifies the scalar alpha
[in]xThe vector x.
[in]betabeta specifies the scalar beta
[in,out]yThe vector y.

Definition at line 629 of file bcsc_dspmv.c.

References bcsc_dspmv_seq(), bcsc_dspmv_smp(), bvec_dgather_remote(), pastix_data_s::iparm, IPARM_SCHEDULER, IPARM_TRANSPOSE_SOLVE, pastix_int_t, PastixNoTrans, PastixSchedDynamic, and PastixSchedStatic.

Referenced by d_refine_init().

◆ bcsc_dspmv_seq()

void bcsc_dspmv_seq ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
double  alpha,
const double *  x,
double  beta,
double *  y 
)

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

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars.

Parameters
[in]pastix_dataProvide information about bcsc
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixTrans: A is conjugate transposed.
[in]alphaalpha specifies the scalar alpha
[in]xThe vector x.
[in]betabeta specifies the scalar beta
[in,out]yThe vector y.

Definition at line 246 of file bcsc_dspmv.c.

References pastix_data_s::bcsc, and pastix_data_s::solvmatr.

Referenced by bcsc_dspmv().

◆ bcsc_dspmv_smp()

void bcsc_dspmv_smp ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
double  alpha,
const double *  x,
double  beta,
double *  y 
)

Perform y = alpha A x + beta y (Parallel version)

This functions is parallelized through the internal static scheduler.

Parameters
[in]pastix_dataThe pastix_data structure that holds the A matrix.
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixTrans: A is conjugate transposed.
[in]alphaThe scalar alpha.
[in]xThe vector x
[in]betaThe scalar beta.
[in,out]yOn entry, the vector y On exit, alpha A x + y

Definition at line 552 of file bcsc_dspmv.c.

References pastix_data_s::bcsc, bcsc_dspmv_get_balanced_indexes(), pastix_data_s::isched, pastix_int_t, pthread_bcsc_dspmv(), pthread_bcsc_dspmv_tasktab(), and pastix_data_s::solvmatr.

Referenced by bcsc_dspmv().

◆ bvec_dgather_remote()

const double * bvec_dgather_remote ( const pastix_data_t pastix_data,
const double *  y 
)

Gather a distributed right hand side (bvec storage) on all nodes.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the local portion of the vector y. On exit, the complete vector y.
Return values
TODO

Definition at line 1352 of file bvec_dcompute.c.

References pastix_data_s::bcsc, solver_matrix_s::cblktab, pastix_int_t, pastix_data_s::procnbr, and pastix_data_s::solvmatr.

Referenced by bcsc_dspmv().

◆ bvec_dnullify_remote()

void bvec_dnullify_remote ( const pastix_data_t pastix_data,
double *  y 
)

Set to 0 remote coefficients.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the initial vector y of size m. On exit, the y vector with remote section set to 0.

Definition at line 1296 of file bvec_dcompute.c.

References solver_matrix_s::cblknbr, solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_data_s::csc, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and pastix_data_s::solvmatr.

◆ bvec_dallreduce()

void bvec_dallreduce ( const pastix_data_t pastix_data,
double *  y 
)

Apply an all reduce of the vector on all nodes.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the initial vector y of size m. On exit, the y vector with remote section set to 0.

Definition at line 1479 of file bvec_dcompute.c.

References pastix_data_s::csc.

◆ bvec_zaxpy_seq()

void bvec_zaxpy_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
pastix_complex64_t  alpha,
const pastix_complex64_t *  x,
pastix_complex64_t *  y 
)

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

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...). -*
[in]nThe size of the vectors.
[in]alphaA scalar.
[in]xThe vector x.
[in,out]yThe vector y.

Definition at line 398 of file bvec_zcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by z_refine_init().

◆ bvec_zaxpy_smp()

void bvec_zaxpy_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
pastix_complex64_t  alpha,
const pastix_complex64_t *  x,
pastix_complex64_t *  y 
)

Perform y = alpha * x + y (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]alphaThe scalar to scale x
[in]xThe vector to be scaled
[in,out]yThe resulting solution

Definition at line 513 of file bvec_zcompute.c.

References pastix_data_s::isched, and pthread_bvec_zaxpy().

Referenced by z_refine_init().

◆ bvec_zcopy_seq()

void bvec_zcopy_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex64_t *  x,
pastix_complex64_t *  y 
)

Copy a vector y = x (Sequential version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]xThe vector to be copied
[in,out]yThe vector copy of x

Definition at line 879 of file bvec_zcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by z_refine_init().

◆ bvec_zcopy_smp()

void bvec_zcopy_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex64_t *  x,
pastix_complex64_t *  y 
)

Copy a vector y = x (parallel version)

   Initialise argument for the parallel function
Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]xThe vector to be copied
[in,out]yThe vector copy of x

Definition at line 980 of file bvec_zcompute.c.

References pastix_data_s::isched, and pthread_bvec_zcopy().

Referenced by z_refine_init().

◆ bvec_zdotu_seq()

pastix_complex64_t bvec_zdotu_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex64_t *  x,
const pastix_complex64_t *  y 
)

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

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]xThe vector x.
[in]yThe vector y.
[in]nThe size of the vectors.
Return values
thescalar product of x and y.

Definition at line 721 of file bvec_zcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

◆ bvec_zdotu_smp()

pastix_complex64_t bvec_zdotu_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex64_t *  x,
const pastix_complex64_t *  y 
)

Compute a regular scalar product x.y (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x, y and r
[in]xThe first vector of the scalar product
[in]yThe second vector of the scalar product
Returns
The allocated vector

Definition at line 839 of file bvec_zcompute.c.

References pastix_data_s::isched, and pthread_bvec_zdotu().

◆ bvec_zgemv_seq()

void bvec_zgemv_seq ( pastix_data_t pastix_data,
pastix_int_t  m,
pastix_int_t  n,
pastix_complex64_t  alpha,
const pastix_complex64_t *  A,
pastix_int_t  lda,
const pastix_complex64_t *  x,
pastix_complex64_t  beta,
pastix_complex64_t *  y 
)

Compute.

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

(Sequential version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]mThe number of rows of the matrix A, and the size of y.
[in]nThe number of columns of the matrix A, and the size of x.
[in]alphaThe scalar alpha.
[in]AThe dense matrix A of size lda-by-n.
[in]ldaThe leading dimension of the matrix A. lda >= max(1,m)
[in]xThe vector x of size n.
[in]betaThe scalar beta.
[in,out]yOn entry, the initial vector y of size m. On exit, the updated vector.

Definition at line 1112 of file bvec_zcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_rhs_s::m, pastix_rhs_s::n, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by z_refine_init().

◆ bvec_zgemv_smp()

void bvec_zgemv_smp ( pastix_data_t pastix_data,
pastix_int_t  m,
pastix_int_t  n,
pastix_complex64_t  alpha,
const pastix_complex64_t *  A,
pastix_int_t  lda,
const pastix_complex64_t *  x,
pastix_complex64_t  beta,
pastix_complex64_t *  y 
)

Compute.

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

(Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]mThe number of rows of the matrix A, and the size of y.
[in]nThe number of columns of the matrix A, and the size of x.
[in]alphaThe scalar alpha.
[in]AThe dense matrix A of size lda-by-n.
[in]ldaThe leading dimension of the matrix A. lda >= max(1,m)
[in]xThe vector x of size n.
[in]betaThe scalar beta.
[in,out]yOn entry, the initial vector y of size m. On exit, the updated vector.

Definition at line 1262 of file bvec_zcompute.c.

References pastix_data_s::isched, and pthread_bvec_zgemv().

Referenced by z_refine_init().

◆ bvec_znrm2_seq()

double bvec_znrm2_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex64_t *  x 
)

Compute the norm 2 of a vector. (Sequential version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]nThe size of the vector x.
[in]xThe vector x of size n.
Return values
thenorm 2 of x.

Definition at line 71 of file bvec_zcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by z_refine_init().

◆ bvec_znrm2_smp()

double bvec_znrm2_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex64_t *  x 
)

Compute the norm 2 of a vector. (Parallel version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]xThe vector which norm2 is to be computed
[in]nThe number of elements of x
Returns
The norm 2 of the vector

Definition at line 215 of file bvec_zcompute.c.

References pastix_data_s::isched, pthread_bvec_znrm2(), and pastix_data_s::solvmatr.

Referenced by z_refine_init().

◆ bvec_zscal_seq()

void bvec_zscal_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
pastix_complex64_t  alpha,
pastix_complex64_t *  x 
)

Scale a vector by the scalar alpha. (Sequential version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]nThe size of the vector x.
[in]alphaThe scalar to scale the vector x.
[in,out]xThe vector x to scale.

Definition at line 259 of file bvec_zcompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by z_refine_init().

◆ bvec_zscal_smp()

void bvec_zscal_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
pastix_complex64_t  alpha,
pastix_complex64_t *  x 
)

Scale a vector (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of the vector
[in]alphaThe scaling parameter
[in,out]xThe vector to be scaled

Definition at line 362 of file bvec_zcompute.c.

References pastix_data_s::isched, and pthread_bvec_zscal().

Referenced by z_refine_init().

◆ 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().

◆ bcsc_znorm()

double bcsc_znorm ( pastix_normtype_t  ntype,
const pastix_bcsc_t *  bcsc 
)

Compute the norm of an bcsc matrix.

Parameters
[in]ntype= PastixMaxNorm: Max norm = PastixOneNorm: One norm = PastixInfNorm: Infinity norm = PastixFrobeniusNorm: Frobenius norm
[in]bcscThe bcsc structure describing the matrix.
Return values
Thenorm of the matrix.

Definition at line 252 of file bcsc_znorm.c.

References bcsc_znorm_frobenius(), bcsc_znorm_inf(), bcsc_znorm_max(), bcsc_znorm_one(), PastixFrobeniusNorm, PastixInfNorm, PastixMaxNorm, and PastixOneNorm.

◆ bcsc_zspsv()

void bcsc_zspsv ( pastix_data_t pastix_data,
pastix_complex64_t *  b,
pastix_complex32_t work 
)

Solve A x = b with A the sparse matrix.

In Complex64 and Double precision and if mixed-precision is enabled, solve SA sx = sb with SA the sparse matrix previously initialized respectively in Complex32 or Float precision.

Parameters
[in]pastix_dataThe PaStiX data structure that describes the solver instance.
[in,out]bOn entry, the right hand side On exit, the solution of the problem A x = b
[in,out]workOn entry, if mixed-precision is disabled or incompatible with the sparse matrix's precision, the normal solve function is called and work must be NULL. On exit, works stays NULL If mixed-precision is enabled, work must be allocated as a vector half the size of b, so that the solve function can be performed in in mixed-precision. On exit, work is undefined.

Definition at line 1017 of file bvec_zcompute.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::bcsc, pastix_rhs_s::cblkb, pastix_rhs_s::flttype, pastix_data_s::iparm, IPARM_MIXED, IPARM_VERBOSE, pastix_rhs_s::m, pastix_rhs_s::n, pastix_int_t, and pastix_subtask_solve().

Referenced by z_refine_init().

◆ bcsc_zspmv()

void bcsc_zspmv ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
pastix_complex64_t  alpha,
const pastix_complex64_t *  x,
pastix_complex64_t  beta,
pastix_complex64_t *  y 
)

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

This function is used only in testings.

Parameters
[in]pastix_dataProvide information about bcsc, and select the scheduling version based on iparm[IPARM_SCHEDULER].
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixConjTrans: A is conjugate transposed.
[in]alphaalpha specifies the scalar alpha
[in]xThe vector x.
[in]betabeta specifies the scalar beta
[in,out]yThe vector y.

Definition at line 629 of file bcsc_zspmv.c.

References bcsc_zspmv_seq(), bcsc_zspmv_smp(), bvec_zgather_remote(), pastix_data_s::iparm, IPARM_SCHEDULER, IPARM_TRANSPOSE_SOLVE, pastix_int_t, PastixNoTrans, PastixSchedDynamic, and PastixSchedStatic.

Referenced by z_refine_init().

◆ bcsc_zspmv_seq()

void bcsc_zspmv_seq ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
pastix_complex64_t  alpha,
const pastix_complex64_t *  x,
pastix_complex64_t  beta,
pastix_complex64_t *  y 
)

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

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars.

Parameters
[in]pastix_dataProvide information about bcsc
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixConjTrans: A is conjugate transposed.
[in]alphaalpha specifies the scalar alpha
[in]xThe vector x.
[in]betabeta specifies the scalar beta
[in,out]yThe vector y.

Definition at line 246 of file bcsc_zspmv.c.

References pastix_data_s::bcsc, and pastix_data_s::solvmatr.

Referenced by bcsc_zspmv().

◆ bcsc_zspmv_smp()

void bcsc_zspmv_smp ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
pastix_complex64_t  alpha,
const pastix_complex64_t *  x,
pastix_complex64_t  beta,
pastix_complex64_t *  y 
)

Perform y = alpha A x + beta y (Parallel version)

This functions is parallelized through the internal static scheduler.

Parameters
[in]pastix_dataThe pastix_data structure that holds the A matrix.
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixConjTrans: A is conjugate transposed.
[in]alphaThe scalar alpha.
[in]xThe vector x
[in]betaThe scalar beta.
[in,out]yOn entry, the vector y On exit, alpha A x + y

Definition at line 552 of file bcsc_zspmv.c.

References pastix_data_s::bcsc, bcsc_zspmv_get_balanced_indexes(), pastix_data_s::isched, pastix_int_t, pthread_bcsc_zspmv(), pthread_bcsc_zspmv_tasktab(), and pastix_data_s::solvmatr.

Referenced by bcsc_zspmv().

◆ bvec_zgather_remote()

const pastix_complex64_t * bvec_zgather_remote ( const pastix_data_t pastix_data,
const pastix_complex64_t *  y 
)

Gather a distributed right hand side (bvec storage) on all nodes.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the local portion of the vector y. On exit, the complete vector y.
Return values
TODO

Definition at line 1352 of file bvec_zcompute.c.

References pastix_data_s::bcsc, solver_matrix_s::cblktab, pastix_int_t, pastix_data_s::procnbr, and pastix_data_s::solvmatr.

Referenced by bcsc_zspmv().

◆ bvec_znullify_remote()

void bvec_znullify_remote ( const pastix_data_t pastix_data,
pastix_complex64_t *  y 
)

Set to 0 remote coefficients.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the initial vector y of size m. On exit, the y vector with remote section set to 0.

Definition at line 1296 of file bvec_zcompute.c.

References solver_matrix_s::cblknbr, solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_data_s::csc, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and pastix_data_s::solvmatr.

◆ bvec_zallreduce()

void bvec_zallreduce ( const pastix_data_t pastix_data,
pastix_complex64_t *  y 
)

Apply an all reduce of the vector on all nodes.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the initial vector y of size m. On exit, the y vector with remote section set to 0.

Definition at line 1479 of file bvec_zcompute.c.

References pastix_data_s::csc.

◆ bvec_caxpy_seq()

void bvec_caxpy_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
pastix_complex32_t  alpha,
const pastix_complex32_t x,
pastix_complex32_t y 
)

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

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...). -*
[in]nThe size of the vectors.
[in]alphaA scalar.
[in]xThe vector x.
[in,out]yThe vector y.

Definition at line 398 of file bvec_ccompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by c_refine_init().

◆ bvec_caxpy_smp()

void bvec_caxpy_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
pastix_complex32_t  alpha,
const pastix_complex32_t x,
pastix_complex32_t y 
)

Perform y = alpha * x + y (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]alphaThe scalar to scale x
[in]xThe vector to be scaled
[in,out]yThe resulting solution

Definition at line 513 of file bvec_ccompute.c.

References pastix_data_s::isched, and pthread_bvec_caxpy().

Referenced by c_refine_init().

◆ bvec_ccopy_seq()

void bvec_ccopy_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex32_t x,
pastix_complex32_t y 
)

Copy a vector y = x (Sequential version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]xThe vector to be copied
[in,out]yThe vector copy of x

Definition at line 879 of file bvec_ccompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by c_refine_init().

◆ bvec_ccopy_smp()

void bvec_ccopy_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex32_t x,
pastix_complex32_t y 
)

Copy a vector y = x (parallel version)

   Initialise argument for the parallel function
Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]xThe vector to be copied
[in,out]yThe vector copy of x

Definition at line 980 of file bvec_ccompute.c.

References pastix_data_s::isched, and pthread_bvec_ccopy().

Referenced by c_refine_init().

◆ bvec_cdotu_seq()

pastix_complex32_t bvec_cdotu_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex32_t x,
const pastix_complex32_t y 
)

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

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]xThe vector x.
[in]yThe vector y.
[in]nThe size of the vectors.
Return values
thescalar product of x and y.

Definition at line 721 of file bvec_ccompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

◆ bvec_cdotu_smp()

pastix_complex32_t bvec_cdotu_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex32_t x,
const pastix_complex32_t y 
)

Compute a regular scalar product x.y (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x, y and r
[in]xThe first vector of the scalar product
[in]yThe second vector of the scalar product
Returns
The allocated vector

Definition at line 839 of file bvec_ccompute.c.

References pastix_data_s::isched, and pthread_bvec_cdotu().

◆ bvec_cgemv_seq()

void bvec_cgemv_seq ( pastix_data_t pastix_data,
pastix_int_t  m,
pastix_int_t  n,
pastix_complex32_t  alpha,
const pastix_complex32_t A,
pastix_int_t  lda,
const pastix_complex32_t x,
pastix_complex32_t  beta,
pastix_complex32_t y 
)

Compute.

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

(Sequential version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]mThe number of rows of the matrix A, and the size of y.
[in]nThe number of columns of the matrix A, and the size of x.
[in]alphaThe scalar alpha.
[in]AThe dense matrix A of size lda-by-n.
[in]ldaThe leading dimension of the matrix A. lda >= max(1,m)
[in]xThe vector x of size n.
[in]betaThe scalar beta.
[in,out]yOn entry, the initial vector y of size m. On exit, the updated vector.

Definition at line 1112 of file bvec_ccompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_rhs_s::m, pastix_rhs_s::n, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by c_refine_init().

◆ bvec_cgemv_smp()

void bvec_cgemv_smp ( pastix_data_t pastix_data,
pastix_int_t  m,
pastix_int_t  n,
pastix_complex32_t  alpha,
const pastix_complex32_t A,
pastix_int_t  lda,
const pastix_complex32_t x,
pastix_complex32_t  beta,
pastix_complex32_t y 
)

Compute.

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

(Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]mThe number of rows of the matrix A, and the size of y.
[in]nThe number of columns of the matrix A, and the size of x.
[in]alphaThe scalar alpha.
[in]AThe dense matrix A of size lda-by-n.
[in]ldaThe leading dimension of the matrix A. lda >= max(1,m)
[in]xThe vector x of size n.
[in]betaThe scalar beta.
[in,out]yOn entry, the initial vector y of size m. On exit, the updated vector.

Definition at line 1262 of file bvec_ccompute.c.

References pastix_data_s::isched, and pthread_bvec_cgemv().

Referenced by c_refine_init().

◆ bvec_cnrm2_seq()

float bvec_cnrm2_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex32_t x 
)

Compute the norm 2 of a vector. (Sequential version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]nThe size of the vector x.
[in]xThe vector x of size n.
Return values
thenorm 2 of x.

Definition at line 71 of file bvec_ccompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by c_refine_init().

◆ bvec_cnrm2_smp()

float bvec_cnrm2_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const pastix_complex32_t x 
)

Compute the norm 2 of a vector. (Parallel version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]xThe vector which norm2 is to be computed
[in]nThe number of elements of x
Returns
The norm 2 of the vector

Definition at line 215 of file bvec_ccompute.c.

References pastix_data_s::isched, pthread_bvec_cnrm2(), and pastix_data_s::solvmatr.

Referenced by c_refine_init().

◆ bvec_cscal_seq()

void bvec_cscal_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
pastix_complex32_t  alpha,
pastix_complex32_t x 
)

Scale a vector by the scalar alpha. (Sequential version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]nThe size of the vector x.
[in]alphaThe scalar to scale the vector x.
[in,out]xThe vector x to scale.

Definition at line 259 of file bvec_ccompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by c_refine_init().

◆ bvec_cscal_smp()

void bvec_cscal_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
pastix_complex32_t  alpha,
pastix_complex32_t x 
)

Scale a vector (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of the vector
[in]alphaThe scaling parameter
[in,out]xThe vector to be scaled

Definition at line 362 of file bvec_ccompute.c.

References pastix_data_s::isched, and pthread_bvec_cscal().

Referenced by c_refine_init().

◆ 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().

◆ bcsc_cnorm()

float bcsc_cnorm ( pastix_normtype_t  ntype,
const pastix_bcsc_t *  bcsc 
)

Compute the norm of an bcsc matrix.

Parameters
[in]ntype= PastixMaxNorm: Max norm = PastixOneNorm: One norm = PastixInfNorm: Infinity norm = PastixFrobeniusNorm: Frobenius norm
[in]bcscThe bcsc structure describing the matrix.
Return values
Thenorm of the matrix.

Definition at line 252 of file bcsc_cnorm.c.

References bcsc_cnorm_frobenius(), bcsc_cnorm_inf(), bcsc_cnorm_max(), bcsc_cnorm_one(), PastixFrobeniusNorm, PastixInfNorm, PastixMaxNorm, and PastixOneNorm.

◆ bcsc_cspsv()

void bcsc_cspsv ( pastix_data_t pastix_data,
pastix_complex32_t b,
pastix_complex32_t work 
)

Solve A x = b with A the sparse matrix.

In Complex64 and Double precision and if mixed-precision is enabled, solve SA sx = sb with SA the sparse matrix previously initialized respectively in Complex32 or Float precision.

Parameters
[in]pastix_dataThe PaStiX data structure that describes the solver instance.
[in,out]bOn entry, the right hand side On exit, the solution of the problem A x = b
[in,out]workOn entry, if mixed-precision is disabled or incompatible with the sparse matrix's precision, the normal solve function is called and work must be NULL. On exit, works stays NULL If mixed-precision is enabled, work must be allocated as a vector half the size of b, so that the solve function can be performed in in mixed-precision. On exit, work is undefined.

Definition at line 1017 of file bvec_ccompute.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::bcsc, pastix_rhs_s::cblkb, pastix_rhs_s::flttype, pastix_data_s::iparm, IPARM_MIXED, IPARM_VERBOSE, pastix_rhs_s::m, pastix_rhs_s::n, pastix_int_t, and pastix_subtask_solve().

Referenced by c_refine_init().

◆ bcsc_cspmv()

void bcsc_cspmv ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
pastix_complex32_t  alpha,
const pastix_complex32_t x,
pastix_complex32_t  beta,
pastix_complex32_t y 
)

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

This function is used only in testings.

Parameters
[in]pastix_dataProvide information about bcsc, and select the scheduling version based on iparm[IPARM_SCHEDULER].
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixConjTrans: A is conjugate transposed.
[in]alphaalpha specifies the scalar alpha
[in]xThe vector x.
[in]betabeta specifies the scalar beta
[in,out]yThe vector y.

Definition at line 629 of file bcsc_cspmv.c.

References bcsc_cspmv_seq(), bcsc_cspmv_smp(), bvec_cgather_remote(), pastix_data_s::iparm, IPARM_SCHEDULER, IPARM_TRANSPOSE_SOLVE, pastix_int_t, PastixNoTrans, PastixSchedDynamic, and PastixSchedStatic.

Referenced by c_refine_init().

◆ bcsc_cspmv_seq()

void bcsc_cspmv_seq ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
pastix_complex32_t  alpha,
const pastix_complex32_t x,
pastix_complex32_t  beta,
pastix_complex32_t y 
)

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

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars.

Parameters
[in]pastix_dataProvide information about bcsc
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixConjTrans: A is conjugate transposed.
[in]alphaalpha specifies the scalar alpha
[in]xThe vector x.
[in]betabeta specifies the scalar beta
[in,out]yThe vector y.

Definition at line 246 of file bcsc_cspmv.c.

References pastix_data_s::bcsc, and pastix_data_s::solvmatr.

Referenced by bcsc_cspmv().

◆ bcsc_cspmv_smp()

void bcsc_cspmv_smp ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
pastix_complex32_t  alpha,
const pastix_complex32_t x,
pastix_complex32_t  beta,
pastix_complex32_t y 
)

Perform y = alpha A x + beta y (Parallel version)

This functions is parallelized through the internal static scheduler.

Parameters
[in]pastix_dataThe pastix_data structure that holds the A matrix.
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixConjTrans: A is conjugate transposed.
[in]alphaThe scalar alpha.
[in]xThe vector x
[in]betaThe scalar beta.
[in,out]yOn entry, the vector y On exit, alpha A x + y

Definition at line 552 of file bcsc_cspmv.c.

References pastix_data_s::bcsc, bcsc_cspmv_get_balanced_indexes(), pastix_data_s::isched, pastix_int_t, pthread_bcsc_cspmv(), pthread_bcsc_cspmv_tasktab(), and pastix_data_s::solvmatr.

Referenced by bcsc_cspmv().

◆ bvec_cgather_remote()

const pastix_complex32_t * bvec_cgather_remote ( const pastix_data_t pastix_data,
const pastix_complex32_t y 
)

Gather a distributed right hand side (bvec storage) on all nodes.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the local portion of the vector y. On exit, the complete vector y.
Return values
TODO

Definition at line 1352 of file bvec_ccompute.c.

References pastix_data_s::bcsc, solver_matrix_s::cblktab, pastix_int_t, pastix_data_s::procnbr, and pastix_data_s::solvmatr.

Referenced by bcsc_cspmv().

◆ bvec_cnullify_remote()

void bvec_cnullify_remote ( const pastix_data_t pastix_data,
pastix_complex32_t y 
)

Set to 0 remote coefficients.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the initial vector y of size m. On exit, the y vector with remote section set to 0.

Definition at line 1296 of file bvec_ccompute.c.

References solver_matrix_s::cblknbr, solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_data_s::csc, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and pastix_data_s::solvmatr.

◆ bvec_callreduce()

void bvec_callreduce ( const pastix_data_t pastix_data,
pastix_complex32_t y 
)

Apply an all reduce of the vector on all nodes.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the initial vector y of size m. On exit, the y vector with remote section set to 0.

Definition at line 1479 of file bvec_ccompute.c.

References pastix_data_s::csc.

◆ bvec_saxpy_seq()

void bvec_saxpy_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
float  alpha,
const float *  x,
float *  y 
)

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

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...). -*
[in]nThe size of the vectors.
[in]alphaA scalar.
[in]xThe vector x.
[in,out]yThe vector y.

Definition at line 398 of file bvec_scompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by s_refine_init().

◆ bvec_saxpy_smp()

void bvec_saxpy_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
float  alpha,
const float *  x,
float *  y 
)

Perform y = alpha * x + y (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]alphaThe scalar to scale x
[in]xThe vector to be scaled
[in,out]yThe resulting solution

Definition at line 513 of file bvec_scompute.c.

References pastix_data_s::isched, and pthread_bvec_saxpy().

Referenced by s_refine_init().

◆ bvec_scopy_seq()

void bvec_scopy_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const float *  x,
float *  y 
)

Copy a vector y = x (Sequential version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]xThe vector to be copied
[in,out]yThe vector copy of x

Definition at line 879 of file bvec_scompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by s_refine_init().

◆ bvec_scopy_smp()

void bvec_scopy_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const float *  x,
float *  y 
)

Copy a vector y = x (parallel version)

   Initialise argument for the parallel function
Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x and y
[in]xThe vector to be copied
[in,out]yThe vector copy of x

Definition at line 980 of file bvec_scompute.c.

References pastix_data_s::isched, and pthread_bvec_scopy().

Referenced by s_refine_init().

◆ bvec_sdot_seq()

float bvec_sdot_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const float *  x,
const float *  y 
)

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

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]xThe vector x.
[in]yThe vector y.
[in]nThe size of the vectors.
Return values
thescalar product of x and y.

Definition at line 721 of file bvec_scompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by s_refine_init().

◆ bvec_sdot_smp()

float bvec_sdot_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const float *  x,
const float *  y 
)

Compute a regular scalar product x.y (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of vectors x, y and r
[in]xThe first vector of the scalar product
[in]yThe second vector of the scalar product
Returns
The allocated vector

Definition at line 839 of file bvec_scompute.c.

References pastix_data_s::isched, and pthread_bvec_sdot().

Referenced by s_refine_init().

◆ bvec_sgemv_seq()

void bvec_sgemv_seq ( pastix_data_t pastix_data,
pastix_int_t  m,
pastix_int_t  n,
float  alpha,
const float *  A,
pastix_int_t  lda,
const float *  x,
float  beta,
float *  y 
)

Compute.

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

(Sequential version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]mThe number of rows of the matrix A, and the size of y.
[in]nThe number of columns of the matrix A, and the size of x.
[in]alphaThe scalar alpha.
[in]AThe dense matrix A of size lda-by-n.
[in]ldaThe leading dimension of the matrix A. lda >= max(1,m)
[in]xThe vector x of size n.
[in]betaThe scalar beta.
[in,out]yOn entry, the initial vector y of size m. On exit, the updated vector.

Definition at line 1112 of file bvec_scompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_rhs_s::m, pastix_rhs_s::n, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by s_refine_init().

◆ bvec_sgemv_smp()

void bvec_sgemv_smp ( pastix_data_t pastix_data,
pastix_int_t  m,
pastix_int_t  n,
float  alpha,
const float *  A,
pastix_int_t  lda,
const float *  x,
float  beta,
float *  y 
)

Compute.

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

(Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]mThe number of rows of the matrix A, and the size of y.
[in]nThe number of columns of the matrix A, and the size of x.
[in]alphaThe scalar alpha.
[in]AThe dense matrix A of size lda-by-n.
[in]ldaThe leading dimension of the matrix A. lda >= max(1,m)
[in]xThe vector x of size n.
[in]betaThe scalar beta.
[in,out]yOn entry, the initial vector y of size m. On exit, the updated vector.

Definition at line 1262 of file bvec_scompute.c.

References pastix_data_s::isched, and pthread_bvec_sgemv().

Referenced by s_refine_init().

◆ bvec_snrm2_seq()

float bvec_snrm2_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
const float *  x 
)

Compute the norm 2 of a vector. (Sequential version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]nThe size of the vector x.
[in]xThe vector x of size n.
Return values
thenorm 2 of x.

Definition at line 71 of file bvec_scompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by s_refine_init().

◆ bvec_snrm2_smp()

float bvec_snrm2_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
const float *  x 
)

Compute the norm 2 of a vector. (Parallel version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]xThe vector which norm2 is to be computed
[in]nThe number of elements of x
Returns
The norm 2 of the vector

Definition at line 215 of file bvec_scompute.c.

References pastix_data_s::isched, pthread_bvec_snrm2(), and pastix_data_s::solvmatr.

Referenced by s_refine_init().

◆ bvec_sscal_seq()

void bvec_sscal_seq ( pastix_data_t pastix_data,
pastix_int_t  n,
float  alpha,
float *  x 
)

Scale a vector by the scalar alpha. (Sequential version)

Parameters
[in]pastix_dataProvide information to the parallel version, to know the global context (Number of thread, barrier, ...).
[in]nThe size of the vector x.
[in]alphaThe scalar to scale the vector x.
[in,out]xThe vector x to scale.

Definition at line 259 of file bvec_scompute.c.

References pastix_data_s::bcsc, cblk_colnbr(), bcsc_cblk_s::cblknum, solver_matrix_s::cblktab, solver_cblk_s::lcolidx, pastix_int_t, and pastix_data_s::solvmatr.

Referenced by s_refine_init().

◆ bvec_sscal_smp()

void bvec_sscal_smp ( pastix_data_t pastix_data,
pastix_int_t  n,
float  alpha,
float *  x 
)

Scale a vector (Parallel version)

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in]nThe number of elements of the vector
[in]alphaThe scaling parameter
[in,out]xThe vector to be scaled

Definition at line 362 of file bvec_scompute.c.

References pastix_data_s::isched, and pthread_bvec_sscal().

Referenced by s_refine_init().

◆ 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().

◆ bcsc_snorm()

float bcsc_snorm ( pastix_normtype_t  ntype,
const pastix_bcsc_t *  bcsc 
)

Compute the norm of an bcsc matrix.

Parameters
[in]ntype= PastixMaxNorm: Max norm = PastixOneNorm: One norm = PastixInfNorm: Infinity norm = PastixFrobeniusNorm: Frobenius norm
[in]bcscThe bcsc structure describing the matrix.
Return values
Thenorm of the matrix.

Definition at line 252 of file bcsc_snorm.c.

References bcsc_snorm_frobenius(), bcsc_snorm_inf(), bcsc_snorm_max(), bcsc_snorm_one(), PastixFrobeniusNorm, PastixInfNorm, PastixMaxNorm, and PastixOneNorm.

◆ bcsc_sspsv()

void bcsc_sspsv ( pastix_data_t pastix_data,
float *  b,
float *  work 
)

Solve A x = b with A the sparse matrix.

In Complex64 and Double precision and if mixed-precision is enabled, solve SA sx = sb with SA the sparse matrix previously initialized respectively in Complex32 or Float precision.

Parameters
[in]pastix_dataThe PaStiX data structure that describes the solver instance.
[in,out]bOn entry, the right hand side On exit, the solution of the problem A x = b
[in,out]workOn entry, if mixed-precision is disabled or incompatible with the sparse matrix's precision, the normal solve function is called and work must be NULL. On exit, works stays NULL If mixed-precision is enabled, work must be allocated as a vector half the size of b, so that the solve function can be performed in in mixed-precision. On exit, work is undefined.

Definition at line 1017 of file bvec_scompute.c.

References pastix_rhs_s::allocated, pastix_rhs_s::b, pastix_data_s::bcsc, pastix_rhs_s::cblkb, pastix_rhs_s::flttype, pastix_data_s::iparm, IPARM_MIXED, IPARM_VERBOSE, pastix_rhs_s::m, pastix_rhs_s::n, pastix_int_t, and pastix_subtask_solve().

Referenced by s_refine_init().

◆ bcsc_sspmv()

void bcsc_sspmv ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
float  alpha,
const float *  x,
float  beta,
float *  y 
)

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

This function is used only in testings.

Parameters
[in]pastix_dataProvide information about bcsc, and select the scheduling version based on iparm[IPARM_SCHEDULER].
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixTrans: A is conjugate transposed.
[in]alphaalpha specifies the scalar alpha
[in]xThe vector x.
[in]betabeta specifies the scalar beta
[in,out]yThe vector y.

Definition at line 629 of file bcsc_sspmv.c.

References bcsc_sspmv_seq(), bcsc_sspmv_smp(), bvec_sgather_remote(), pastix_data_s::iparm, IPARM_SCHEDULER, IPARM_TRANSPOSE_SOLVE, pastix_int_t, PastixNoTrans, PastixSchedDynamic, and PastixSchedStatic.

Referenced by s_refine_init().

◆ bcsc_sspmv_seq()

void bcsc_sspmv_seq ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
float  alpha,
const float *  x,
float  beta,
float *  y 
)

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

Where A is given in the bcsc format, x and y are two vectors of size n, and alpha and beta are two scalars.

Parameters
[in]pastix_dataProvide information about bcsc
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixTrans: A is conjugate transposed.
[in]alphaalpha specifies the scalar alpha
[in]xThe vector x.
[in]betabeta specifies the scalar beta
[in,out]yThe vector y.

Definition at line 246 of file bcsc_sspmv.c.

References pastix_data_s::bcsc, and pastix_data_s::solvmatr.

Referenced by bcsc_sspmv().

◆ bcsc_sspmv_smp()

void bcsc_sspmv_smp ( const pastix_data_t pastix_data,
pastix_trans_t  trans,
float  alpha,
const float *  x,
float  beta,
float *  y 
)

Perform y = alpha A x + beta y (Parallel version)

This functions is parallelized through the internal static scheduler.

Parameters
[in]pastix_dataThe pastix_data structure that holds the A matrix.
[in]transSpecifies whether the matrix A from the bcsc is transposed, not transposed or conjugate transposed: = PastixNoTrans: A is not transposed; = PastixTrans: A is transposed; = PastixTrans: A is conjugate transposed.
[in]alphaThe scalar alpha.
[in]xThe vector x
[in]betaThe scalar beta.
[in,out]yOn entry, the vector y On exit, alpha A x + y

Definition at line 552 of file bcsc_sspmv.c.

References pastix_data_s::bcsc, bcsc_sspmv_get_balanced_indexes(), pastix_data_s::isched, pastix_int_t, pthread_bcsc_sspmv(), pthread_bcsc_sspmv_tasktab(), and pastix_data_s::solvmatr.

Referenced by bcsc_sspmv().

◆ bvec_sgather_remote()

const float * bvec_sgather_remote ( const pastix_data_t pastix_data,
const float *  y 
)

Gather a distributed right hand side (bvec storage) on all nodes.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the local portion of the vector y. On exit, the complete vector y.
Return values
TODO

Definition at line 1352 of file bvec_scompute.c.

References pastix_data_s::bcsc, solver_matrix_s::cblktab, pastix_int_t, pastix_data_s::procnbr, and pastix_data_s::solvmatr.

Referenced by bcsc_sspmv().

◆ bvec_snullify_remote()

void bvec_snullify_remote ( const pastix_data_t pastix_data,
float *  y 
)

Set to 0 remote coefficients.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the initial vector y of size m. On exit, the y vector with remote section set to 0.

Definition at line 1296 of file bvec_scompute.c.

References solver_matrix_s::cblknbr, solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_data_s::csc, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and pastix_data_s::solvmatr.

◆ bvec_sallreduce()

void bvec_sallreduce ( const pastix_data_t pastix_data,
float *  y 
)

Apply an all reduce of the vector on all nodes.

Parameters
[in]pastix_dataThe information about sequential and parallel version (Number of thread, ...).
[in,out]yOn entry, the initial vector y of size m. On exit, the y vector with remote section set to 0.

Definition at line 1479 of file bvec_scompute.c.

References pastix_data_s::csc.

◆ pthread_bvec_znrm2()

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

Compute the norm 2 of a vector. (Parallel version)

Parameters
[in]ctxThe context of the current thread
[in,out]argsThe parameter that providenumber of elements of x, and the vector which norm2 is to be computed, and the norm value

Definition at line 146 of file bvec_zcompute.c.

References pastix_int_t.

Referenced by bvec_znrm2_smp().

◆ pthread_bvec_zscal()

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

Scale a vector (Parallel version)

Parameters
[in]ctxThe information about number of thread and rank of the actual thread
[in,out]argsThe argument providing number of elements of the vector, the scaling parameter and, and the vector to be scaled

Definition at line 310 of file bvec_zcompute.c.

References pastix_int_t.

Referenced by bvec_zscal_smp().

◆ pthread_bvec_dnrm2()

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

Compute the norm 2 of a vector. (Parallel version)

Parameters
[in]ctxThe context of the current thread
[in,out]argsThe parameter that providenumber of elements of x, and the vector which norm2 is to be computed, and the norm value

Definition at line 146 of file bvec_dcompute.c.

References pastix_int_t.

Referenced by bvec_dnrm2_smp().

◆ pthread_bvec_dscal()

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

Scale a vector (Parallel version)

Parameters
[in]ctxThe information about number of thread and rank of the actual thread
[in,out]argsThe argument providing number of elements of the vector, the scaling parameter and, and the vector to be scaled

Definition at line 310 of file bvec_dcompute.c.

References pastix_int_t.

Referenced by bvec_dscal_smp().

◆ pthread_bvec_cnrm2()

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

Compute the norm 2 of a vector. (Parallel version)

Parameters
[in]ctxThe context of the current thread
[in,out]argsThe parameter that providenumber of elements of x, and the vector which norm2 is to be computed, and the norm value

Definition at line 146 of file bvec_ccompute.c.

References pastix_int_t.

Referenced by bvec_cnrm2_smp().

◆ pthread_bvec_cscal()

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

Scale a vector (Parallel version)

Parameters
[in]ctxThe information about number of thread and rank of the actual thread
[in,out]argsThe argument providing number of elements of the vector, the scaling parameter and, and the vector to be scaled

Definition at line 310 of file bvec_ccompute.c.

References pastix_int_t.

Referenced by bvec_cscal_smp().

◆ pthread_bvec_snrm2()

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

Compute the norm 2 of a vector. (Parallel version)

Parameters
[in]ctxThe context of the current thread
[in,out]argsThe parameter that providenumber of elements of x, and the vector which norm2 is to be computed, and the norm value

Definition at line 146 of file bvec_scompute.c.

References pastix_int_t.

Referenced by bvec_snrm2_smp().

◆ pthread_bvec_sscal()

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

Scale a vector (Parallel version)

Parameters
[in]ctxThe information about number of thread and rank of the actual thread
[in,out]argsThe argument providing number of elements of the vector, the scaling parameter and, and the vector to be scaled

Definition at line 310 of file bvec_scompute.c.

References pastix_int_t.

Referenced by bvec_sscal_smp().