34 #if defined(PASTIX_WITH_MPI)
35 void bcsc_zstore_data(
const spmatrix_t *spm,
53 pastix_complex64_t alpha,
54 const pastix_complex64_t *x,
55 pastix_complex64_t *y );
58 pastix_complex64_t alpha,
59 const pastix_complex64_t *x,
60 pastix_complex64_t *y );
64 const pastix_complex64_t *x,
65 pastix_complex64_t *y );
68 const pastix_complex64_t *x,
69 pastix_complex64_t *y );
71 #if defined(PRECISION_z) || defined(PRECISION_c)
72 pastix_complex64_t bvec_zdotc_seq(
pastix_data_t *pastix_data,
74 const pastix_complex64_t *x,
75 const pastix_complex64_t *y );
76 pastix_complex64_t bvec_zdotc_smp(
pastix_data_t *pastix_data,
78 const pastix_complex64_t *x,
79 const pastix_complex64_t *y );
84 const pastix_complex64_t *x,
85 const pastix_complex64_t *y );
88 const pastix_complex64_t *x,
89 const pastix_complex64_t *y );
94 pastix_complex64_t alpha,
95 const pastix_complex64_t *A,
97 const pastix_complex64_t *x,
98 pastix_complex64_t beta,
99 pastix_complex64_t *y );
103 pastix_complex64_t alpha,
104 const pastix_complex64_t *A,
106 const pastix_complex64_t *x,
107 pastix_complex64_t beta,
108 pastix_complex64_t *y );
112 const pastix_complex64_t *x );
115 const pastix_complex64_t *x );
119 pastix_complex64_t alpha,
120 pastix_complex64_t *x );
123 pastix_complex64_t alpha,
124 pastix_complex64_t *x );
126 #if defined( PASTIX_WITH_MPI )
129 pastix_complex64_t *b,
136 pastix_complex64_t *b,
146 pastix_complex64_t *A,
157 const pastix_bcsc_t *bcsc );
160 pastix_complex64_t *b,
165 pastix_complex64_t alpha,
166 const pastix_complex64_t *x,
167 pastix_complex64_t beta,
168 pastix_complex64_t *y );
172 pastix_complex64_t alpha,
173 const pastix_complex64_t *x,
174 pastix_complex64_t beta,
175 pastix_complex64_t *y );
178 pastix_complex64_t alpha,
179 const pastix_complex64_t *x,
180 pastix_complex64_t beta,
181 pastix_complex64_t *y );
190 const pastix_complex64_t *y );
192 pastix_complex64_t *y );
194 pastix_complex64_t *y );
BEGIN_C_DECLS typedef int pastix_int_t
float _Complex pastix_complex32_t
void bcsc_zinit(const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, int initAt, pastix_bcsc_t *bcsc, pastix_int_t valuesize)
Initializes a centralize pastix_complex64_t block csc.
double bcsc_znorm(pastix_normtype_t ntype, const pastix_bcsc_t *bcsc)
Compute the norm of an bcsc matrix.
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)
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.
void bvec_znullify_remote(const pastix_data_t *pastix_data, pastix_complex64_t *y)
Set to 0 remote coefficients.
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)
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)
void bvec_zallreduce(const pastix_data_t *pastix_data, pastix_complex64_t *y)
Apply an all reduce of the vector on all nodes.
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)
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)
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)
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)
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.
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)
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)
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)
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.
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.
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)
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.
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)
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)
Structure to manage communications with distributed spm.
Structure to manage communications with distributed rhs.
enum pastix_normtype_e pastix_normtype_t
Norms.
enum pastix_dir_e pastix_dir_t
Direction.
enum pastix_trans_e pastix_trans_t
Transpostion.
Main PaStiX data structure.
Main PaStiX RHS structure.
Solver column block structure.